ECharts 图表交互组件详解

不知道有没有人像我一样,刚开始学习的时候,不知道legend是什么东西,图例的定义是:图例是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。它具有双重任务,在编图时作为图解表示地图内容的准绳,用图时作为必不可少的阅读指南。图例应符合完备性和一致性的原则。扯多了。

ECharts 中提供了很多交互组件,如:

这是看官方文档记的笔记,官网地址:
https://echarts.apache.org/zh/index.html
关于相关属性的整理来自
https://juejin.im/post/5bd0440ce51d457a1314e780#heading-1
整理的很到位。
如果觉得不错,麻烦顺手点个赞


数据区域缩放组件 dataZoom

顾名思义,该组件可以自由缩放图形。
官网上的介绍是:
『概览数据整体,按需关注数据细节』是数据可视化的基本交互需求。
在这里插入图片描述
dataZoom 组件能够在直角坐标系(grid)、极坐标系(polar)中实现这一功能。
默认情况下 dataZoom 控制 x 轴,即对 x 轴进行数据窗口缩放和数据窗口平移操作。

var option = {
   
   xAxis: {
   
        type: 'value'
    },
    yAxis: {
   
        type: 'value'
    },
    dataZoom: [
        {
      // 这个dataZoom组件,默认控制x轴。
            type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件
            start: 10,      // 左边在 10% 的位置。
            end: 60         // 右边在 60% 的位置。
        }
    ],
    series: [
        {
   
            type: 'scatter', // 这是个『散点图』
            itemStyle: {
   
                opacity: 0.8
            },
            symbolSize: function (val) {
   
                return val[2] * 40;
            },
            data: [
	            ["4.616","7.241","0.896"],["3.958","5.701","0.955"],
	            ["2.768","8.971","0.669"],["9.051","9.710","0.171"],
	            ["14.046","4.182","0.536"],["12.295","1.429","0.962"],
	            ["4.417","8.167","0.113"],["0.492","4.771","0.785"],
	            ["7.632","2.605","0.645"],["14.242","5.042","0.368"]
            ]
        }
    ]
}
 

在这里插入图片描述
上面的实例只能拖动 dataZoom 组件来缩小或放大图表。
如果想在坐标系内进行拖动,以及用鼠标滚轮(或移动触屏上的两指滑动)进行缩放,那么需要 再再加上一个 inside 型的 dataZoom 组件。
这个组件也默认控制x轴
在以上实例基础上我们再增加 type: ‘inside’ 的配置信息:

dataZoom: [
   {
      // 这个dataZoom组件,默认控制x轴。
        type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件
        start: 10,      // 左边在 10% 的位置。
        end: 60         // 右边在 60% 的位置。
    },
    {
      // 这个dataZoom组件,也控制x轴。
        type: 'inside', // 这个 dataZoom 组件是 inside 型 dataZoom 组件
        start: 10,      // 左边在 10% 的位置。
        end: 60         // 右边在 60% 的位置。
    }
],

也可以通过 dataZoom.xAxisIndex 或 dataZoom.yAxisIndex 来指定 dataZoom 控制哪个或哪些数轴。

dataZoom: [
	{
   
	    type: 'slider',
	    show: true,
	    xAxisIndex: [0],
	    start: 1,
	    end: 35
	},
	{
   
	    type: 'slider',
	    show: true,
	    yAxisIndex: [0],
	    left: '93%',
	    start: 29,
	    end: 36
	},
	{
   
	    type: 'inside',
	    xAxisIndex: [0],
	    start: 1,
	    end: 35
	},
	{
   
	    type: 'inside',
	    yAxisIndex: [0],
	    start: 29,
	    end: 36
	}
	],

看一个综合例子。

var data = [];

var random = function (max) {
   
    return (Math.random() * max).toFixed(3);
};

for (var i = 0; i < 5; i++) {
   
    data.push([random(15), random(10), random(1)]);
}

option = {
   
    animation: false,
    legend: {
   
        data: ['scatter']
    },
    tooltip: {
   
    },
    xAxis: {
   
        type: 'value',
        min: 'dataMin',
        max: 'dataMax',
        splitLine: {
   
            show: true
        }
    },
    yAxis: {
   
        type: 'value',
        min: 'dataMin',
        max: 'dataMax',
        splitLine: {
   
            show: true
        }
    },
    dataZoom: [
        {
   
            type: 'slider',
            show: true,
            xAxisIndex: [0],
            start: 1,
            end: 35
        },
        {
   
            type: 'slider',
            show: true,
            yAxisIndex: [0],
            left: '93%',
            start: 29,
            end: 36
        },
        {
   
            type: 'inside',
            xAxisIndex: [0],
            start: 1,
            end: 35
        },
        {
   
            type: 'inside',
            yAxisIndex: [0],
            start: 29,
            end: 36
        }
    ],
    series: [       {
   
            name: 'scatter',
            type: 'scatter',
            itemStyle: {
   
                normal: {
   
                    opacity: 0.8,
                }
            },
            symbolSize: function (val) {
   
                return val[2] * 40;
            },
            data: data
        }
    ]
}



dataZoom相关属性

dataZoom=[                                      //区域缩放
    {
   
        id: 'dataZoomX',
        show:true,                              //是否显示 组件。如果设置为 false,不会显示,但是数据过滤的功能还存在。
        backgroundColor:"rgba(47,69,84,0)",  //组件的背景颜色
        type: 'slider',                         //slider表示有滑动块的,inside表示内置的
        dataBackground:{
                           //数据阴影的样式。
            lineStyle:mylineStyle,              //阴影的线条样式
            areaStyle:myareaStyle,              //阴影的填充样式
        },
        fillerColor:"rgba(167,183,204,0.4)",  //选中范围的填充颜色。
        borderColor:"#ddd",                     //边框颜色。
        filterMode: 'filter',                   //'filter':当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。
                                                  //'weakFilter':当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉。
                                                  //'empty':当前数据窗口外的数据,被 设置为空。即 不会 影响其他轴的数据范围。
                                                  //'none': 不过滤数据,只改变数轴范围。
        xAxisIndex:0,                            //设置 dataZoom-inside 组件控制的 x轴,可以用数组表示多个轴
        yAxisIndex:[0,2],                        //设置 dataZoom-inside 组件控制的 y轴,可以用数组表示多个轴
        radiusAxisIndex:3,                       //设置 dataZoom-inside 组件控制的 radius 轴,可以用数组表示多个轴
        angleAxisIndex:[0,2],                    //设置 dataZoom-inside 组件控制的 angle 轴,可以用数组表示多个轴
        start: 30,                                //数据窗口范围的起始百分比,表示30%
        end: 70,                                  //数据窗口范围的结束百分比,表示70%
        startValue:10,                           //数据窗口范围的起始数值
        endValue:100,                            //数据窗口范围的结束数值。
        orient:"horizontal",                    //布局方式是横还是竖。不仅是布局方式,对于直角坐标系而言,也决定了,缺省情况控制横向数轴还是纵向数轴。'horizontal':水平。'vertical':竖直。
        zoomLock:false,                          //是否锁定选择区域(或叫做数据窗口)的大小。如果设置为 true 则锁定选择区域的大小,也就是说,只能平移,不能缩放。
        throttle:100,                             //设置触发视图刷新的频率。单位为毫秒(ms)。
        zoomOnMouseWheel:true,                  //如何触发缩放。可选值为:true:表示不按任何功能键,鼠标滚轮能触发缩放。false:表示鼠标滚轮不能触发缩放。'shift':表示按住 shift 和鼠标滚轮能触发缩放。'ctrl':表示按住 ctrl 和鼠标滚轮能触发缩放。'alt':表示按住 alt 和鼠标滚轮能触发缩放。
        moveOnMouseMove:true,                   //如何触发数据窗口平移。true:表示不按任何功能键,鼠标移动能触发数据窗口平移。false:表示鼠标滚轮不能触发缩放。'shift':表示按住 shift 和鼠标移动能触发数据窗口平移。'ctrl':表示按住 ctrl 和鼠标移动能触发数据窗口平移。'alt':表示按住 alt 和鼠标移动能触发数据窗口平移。
        left:"center",                           //组件离容器左侧的距离,'left', 'center', 'right','20%'
        top:"top",                                //组件离容器上侧的距离,'top', 'middle', 'bottom','20%'
        right:"auto",                             //组件离容器右侧的距离,'20%'
        bottom:<
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
作为一名AI语言模型,我无法进行编程操作,但我可以提供您一个完整的echarts图表vue组件的基本结构和代码示例,您可以根据它进行修改和完善。 基本结构: ``` <template> <div class="echarts-chart"></div> </template> <script> import echarts from 'echarts' export default { name: 'EchartsChart', props: { // 接收外部传入的数据 chartData: { type: Object, required: true }, // 配置项 options: { type: Object, default() { return {} } } }, data() { return { // 定义一个echarts实例 chart: null } }, mounted() { // 在组件挂载后初始化echarts实例 this.chart = echarts.init( this.$el, null, this.options ) // 渲染图表 this.renderChart(this.chartData) }, methods: { // 渲染图表 renderChart(chartData) { this.chart.setOption(chartData) } }, watch: { // 监听chartData的变化,重新渲染图表 chartData(newValue) { this.renderChart(newValue) } }, beforeDestroy() { // 销毁echarts实例 this.chart.dispose() this.chart = null } } </script> <style> .echarts-chart { width: 100%; height: 100%; } </style> ``` 代码示例: ``` <template> <div class="echarts-chart"></div> </template> <script> import echarts from 'echarts' export default { name: 'EchartsChart', props: { // 接收外部传入的数据 chartData: { type: Object, required: true }, // 配置项 options: { type: Object, default() { return {} } } }, data() { return { // 定义一个echarts实例 chart: null } }, mounted() { // 在组件挂载后初始化echarts实例 this.chart = echarts.init( this.$el, null, this.options ) // 渲染图表 this.renderChart(this.chartData) }, methods: { // 渲染图表 renderChart(chartData) { this.chart.setOption(chartData) } }, watch: { // 监听chartData的变化,重新渲染图表 chartData(newValue) { this.renderChart(newValue) } }, beforeDestroy() { // 销毁echarts实例 this.chart.dispose() this.chart = null } } </script> <style> .echarts-chart { width: 100%; height: 100%; } </style> ``` 使用方法: ``` <template> <div class="app"> <EchartsChart :chartData="chartData" :options="options"></EchartsChart> </div> </template> <script> import EchartsChart from './components/EchartsChart.vue' export default { name: 'App', components: { EchartsChart }, data() { return { chartData: { // echarts图表数据 }, options: { // echarts配置项 } } } } </script> <style> .app { width: 100%; height: 100%; } </style> ``` 以上是一个基本的echarts图表vue组件的结构和代码示例,您可以根据自己的需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值