VUE项目中使用 Echarts data Zoom缩放功能

本文详细介绍了Echarts中dataZoom组件的使用,包括slider和inside两种类型,用于X轴和Y轴的数据窗口缩放,以及相关的配置参数如start、end等,以实现数据可视化的交互功能。通过示例代码展示了如何在柱状图中应用dataZoom,以动态调整显示数据的范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看实例:

data zoom:

有inslide和slide两种dataZoom,也分X,Y轴 

dataZoom:[
    {
        type:"slider",//slider表示有滑动块的,
        show:true,
        xAxisIndex:[0],//表示x轴折叠
        start:1,//数据窗口范围的起始百分比,表示1%
        end:20//数据窗口范围的结束百分比,表示20%坐标
    },
    {
        type:"inside",//           
        yAxisIndex:[0],//表示y轴折叠
        start:1,
        end:35
    },
]

实例:

  // 数据请求
    getPlace() {
      this.$http.get("/api/stayInfo/PersonNum/ForSevenDays").then((res) => {
        if (res.data.status === 200) {
          //console.log(res.data.data);
          let placeData = res.data.data;
          for (let x = 0; x < placeData.length; x++) {
            this.placeLocationName.push(placeData[x].locationName);
            this.placeLocationNum.push(placeData[x].num);
          }
          this.getPlaceCharts();
        }
      });
    },
    // 柱状图
    getPlaceCharts() {
      let myChart = this.$echarts.init(stayPlaceChar);
      myChart.setOption({
        color: ["#3398DB"],
        tooltip: {
          trigger: "axis",
          axisPointer: {
            // 坐标轴指示器,坐标轴触发有效
            type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
          },
        },
        grid: {
          left: "3%",
          right: "4%",
          bottom: "15%",
          top: "10%",
          containLabel: true,
        },
        // 数据量较多时 可采用X Y轴进行缩放
        dataZoom: [
          {
            type: "slider", //slider表示有滑动块的,
            roam: false,
            show: true,
            xAxisIndex: [0], //表示x轴折叠
            start: 1, //数据窗口范围的起始百分比,表示1%
            end: 20, //数据窗口范围的结束百分比,表示20%坐标
          },
        ],
        xAxis: [
          {
            type: "category",
            data: this.placeLocationName,
            axisTick: {
              alignWithLabel: true,
            },
            axisLine: {
              lineStyle: {
                color: "#ccc",
              },
            },
            axisLabel: {
              textStyle: {
                color: "#697085", //坐标值得具体的颜色
              },
            },
          },
        ],
        yAxis: [
          {
            type: "value",
            name: "单位:次",
            nameTextStyle: {
              color: "#697085",
              fontSize: 12,
            },
            minInterval: 1,
            axisLine: {
              lineStyle: {
                color: "#ccc",
              },
            },
            axisLabel: {
              textStyle: {
                color: "#697085", //坐标值得具体的颜色
              },
            },
          },
        ],
        series: [
          {
            name: "直接访问",
            type: "bar",
            barWidth: "20%",
            label: {
              normal: {
                show: true,
                // position: "right",
              },
            },
            data: this.placeLocationNum,
            itemStyle: {
              //通常情况下:
              normal: {
                //每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组
                color: function (params) {
                  var colorList = [
                    "#9F77EA",
                    "#37D5D7",
                    "#E47434",
                    "#F74D68",
                    "#E9CA41",
                    "#30D38A",
                  ];
                  return colorList[params.dataIndex];
                },
              },
            },
          },
        ],
      });
    },

相关属性设置:


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':当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。
        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:"auto",                           //组件离容器下侧的距离,'20%'
 
    },
    {
        id: 'dataZoomY',
        type: 'inside',
        filterMode: 'empty',
        disabled:false,                         //是否停止组件的功能。
        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 和鼠标移动能触发数据窗口平移。
    }
];

 

 

 

 

 

Vue ECharts 实现缩放功能主要是利用了 ECharts 提供的交互事件以及 Vue 的响应式系统结合使用ECharts 是一款由百度开源的数据可视化库,主要用于处理和展示大量的数据信息。而 Vue 则是一个用于构建用户界面的渐进式框架。 ### 实现步骤 #### 1. 安装依赖 首先需要确保已经安装了 VueECharts: ```bash # 使用 npm npm install vue axios echarts --save # 或者使用 yarn yarn add vue axios echarts ``` #### 2. 引入 ECharts 并配置基本组件 在 Vue 组件中引入并初始化 ECharts: ```javascript <template> <div id="chart"></div> </template> <script> import * as echarts from 'echarts'; export default { name: 'ChartComponent', mounted() { this.initChart(); }, methods: { initChart() { const chartDom = document.getElementById('chart'); const myChart = echarts.init(chartDom); // 配置图示的基本选项 const option = { title: { text: '折线图示例' }, tooltip: {}, xAxis: { data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: {}, series: [ { name: 'Series A', type: 'line', data: [820, 932, 901, 934, 1290, 1330, 1320] } ] }; myChart.setOption(option); } } }; </script> ``` #### 3. 添加缩放交互 为了实现缩放功能,通常可以使用 `zoom` 事件绑定。当用户在图表上操作时,例如拖动鼠标滚轮、双击等动作,ECharts 会触发 `zoomstart` 和 `zoomend` 事件,并自动更新图表的状态。然而,Vue 和原生的 JavaScript 操作图表状态的方式略有不同,因此我们需要确保监听到这些事件并在 Vue 组件内部相应地更新图表的显示范围。 下面是一个简化的示例,展示了如何通过点击按钮触发缩放操作: ```javascript methods: { // ...之前的代码 handleZoomIn() { const currentOption = JSON.parse(JSON.stringify(this.myChart.getOption())); if (currentOption.series) { currentOption.series.data.forEach((value, index) => { value *= 1.1; // 示例放大值 }); this.myChart.setOption(currentOption); } }, handleZoomOut() { const currentOption = JSON.parse(JSON.stringify(this.myChart.getOption())); if (currentOption.series) { currentOption.series.data.forEach((value, index) => { value /= 1.1; // 示例缩小值 }); this.myChart.setOption(currentOption); } } }, // ...其他部分 ``` ### 相关问题: 1. **为什么在使用 VueECharts 缩放图表时出现问题?** 可能的原因包括:图表元素未正确加载、数据处理错误、事件绑定错误或是 Vue 生命周期方法与 ECharts 实例的交互不当。检查是否正确初始化了 ECharts 对象、确保数据的正确性和组件的生命周期函数使用得当是非常重要的。 2. **如何自定义 ECharts 缩放功能?** 自定义 ECharts 缩放功能通常涉及到修改 ECharts 的配置项,如启用/禁用某些交互特性、改变缩放阈值、调整缩放效果等。可以在初始化图表时设置 `toolbox` 部分以包含更多自定义工具,比如自定义的缩放功能按钮。 3. **ECharts 是否支持在移动端使用缩放功能?** ECharts 默认支持触摸设备的交互操作,包括缩放和平移。只需确保在移动设备上适配相应的 CSS 样式即可,无需额外配置就能在移动端正常使用缩放功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值