echarts图表动态监听dataZoom滑动,控制柱条的宽度以及数值的显示隐藏

这篇具有很好参考价值的文章主要介绍了echarts图表动态监听dataZoom滑动,控制柱条的宽度以及数值的显示隐藏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当数值过多时,显示所有柱条看着会很凌乱且文字会挤在一起,于是就需要监听datazoom的滑动,拿到对应的阈值后做出相应的配置。
dataZoom” 事件通常用于响应用户对图表进行数据缩放的操作。
这里是datazoom官网api地址:点击跳转至官网文档的datazoom介绍
初始时状态如下图:
echarts监听legendselectchanged并修改datazoom,Web 前端,echarts,前端,javascript
滑动x轴至设定范围内时:
echarts监听legendselectchanged并修改datazoom,Web 前端,echarts,前端,javascript

监听datazoom

myChart为图表元素,在 “dataZoom” 事件上绑定了一个回调函数,当用户在图表上使用数据缩放时,这个回调函数会被触发。

import * as echarts from 'echarts';
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);

myChart.on("dataZoom", function (params) {
})

params值

这里可以获取到当前datazoom的开始位置(start)和结束位置(end)
echarts监听legendselectchanged并修改datazoom,Web 前端,echarts,前端,javascript

获取图表的option

myChart.getOption()myChart.setOption(newoption) 是 Echarts 中常用的两个方法,它们分别用于获取当前图表的配置选项和设置新的配置选项。

myChart.getOption():
作用:该方法用于获取当前图表的配置选项对象。可以在需要获取当前配置选项时调用该方法,例如在事件回调中根据当前配置进行进一步处理或修改。
返回值:返回一个包含当前图表配置的 JavaScript 对象,可以包含图表类型、数据系列、样式设置等信息。

以下为myChart.getOption()返回的值,若有其他需要控制的,都可以举一反三,根据这些值的位置对其进行设置,不局限于本文的控制柱条的宽度以及数值的显示隐藏。
echarts监听legendselectchanged并修改datazoom,Web 前端,echarts,前端,javascript

myChart.setOption(newoption):
作用:该方法用于设置新的配置选项对象,即更新图表的显示内容和样式。通过设置新的配置选项,可以动态改变图表的展示效果,包括数据、样式、主题等。
参数:接受一个新的配置选项对象作为参数,用于更新图表的配置。 返回值:并不返回特定的数值,但会触发图表的重新渲染以反映新的配置选项。

控制柱条宽度及数值的显示与隐藏

这里通过循环图表的option配置中的series数组,设置其数值文本是否显示,以及柱条宽度
series.label.showseries.barWidth文章来源地址https://www.toymoban.com/news/detail-850438.html

// 在用户使用数据缩放时触发该事件
myChart.on('dataZoom', function (params) {
  // 输出参数信息到控制台
  console.log('params', params);
  
  // 获取当前图表的配置选项
  var newoption = myChart.getOption();
  
  // 获取数据缩放的起始位置和结束位置
  var dataZoomStart = params.start;
  var dataZoomEnd = params.end;
  
  // 根据数据缩放的范围对图表进行调整
  if (dataZoomEnd - dataZoomStart > 80) {
    // 如果数据缩放范围大于80,设置柱状图的标签不显示并设置柱状宽度为5
    newoption.series.forEach(function (series) {
      series.label.show = false;//隐藏顶部数值
      series.barWidth = 5;//柱条宽度为5
    });
  } else {
    // 如果数据缩放范围小于等于80,设置柱状图的标签显示并设置柱状宽度为'auto'
    newoption.series.forEach(function (series) {
      series.label.show = true;//显示顶部数值
      series.barWidth = 'auto';//柱条宽度自适应
    });
  }

  // 根据调整后的配置选项更新图表
  myChart.setOption(newoption);
});

// 设置图表的初始配置选项
option && myChart.setOption(option); 

全部代码(echarts示例可直接粘贴使用)

let colors = [
          {
            color: {
              botom: "rgba(253, 234, 60,0)",
              top: "rgba(253, 234, 60,1)",
            },
          },
          {
            color: {
              botom: "rgba(252, 140, 27,0)",
              top: "rgba(252, 140, 27,1)",
            },
          },
          {
            color: {
              botom: "rgba(100, 218, 217,0)",
              top: "rgba(100, 218, 217,1)",
            },
          },
];
var shadowColors = [];
colors.forEach((item) => {
        var colorobj = {
          type: "linear",
          x: 0,
          y: 1,
          x2: 0,
          y2: 0,
          colorStops: [
            {
              offset: 0,
              color: item.color.botom, // 0% 处的颜色
            },
            {
              offset: 1,
              color: item.color.top, // 100% 处的颜色
            },
          ],
        };
        shadowColors.push(colorobj);
});
console.log('shadowColors',shadowColors);
option = {
  color: shadowColors,
  dataZoom: [
          {
            type: "slider", // 设置为滑动条
            show: true, // 显示滑动条
            start: 0, // 滑动条起始位置
            end: 40, // 滑动条结束位置
            bottom: 10, // 滑动条距离底部的距离
            textStyle: {
              color: "#fff",
            },
            backgroundColor: "#acb7c3", // 设置背景颜色
            handleStyle: {
              color: "#2a82e4", // 设置左右两边的可滑动收缩竖线颜色
            },
          },
        ],
  tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow", // 显示阴影指示器
          },
          formatter: function (indexs) {
            var data = [];
            indexs.forEach((item) => {
              data.push({
                  seriesName: item.seriesName,
                  value: item.value,
              });
            });
            var content = "";
            data.forEach((item) => {
              content += item.seriesName + ": " + item.value + "<br>";
            });
            return content;
          },
        },
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun','Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun','Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  },
  yAxis: {
    type: 'value'
  },
  series: [
    {
      data: [120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 110, 130],
      type: 'bar',
      name:'name1',
      barWidth: 10,
      barGap: 1, //柱子之间间距
      label: {
        show: true,
        position: "top",
        color: "white",
        rotate: 60,
        textStyle: {
          color: colors[0].color.top
        },
      },
    },
    {
      data: [110, 250, 110, 80, 90, 120, 160,110, 250, 110, 80, 90, 120, 160,110, 250, 110, 80, 90, 120, 160],
      type: 'bar',
      name:'name2',
      barWidth: 10,
      barGap: 1, //柱子之间间距
      label: {
        show: true,
        position: "top",
        color: "white",
        rotate: 60,
        textStyle: {
          color: colors[1].color.top
        },
      },
    },
    {
      data: [20, 220, 140, 70, 70, 100, 30,20, 220, 140, 70, 70, 100, 30,20, 220, 140, 70, 70, 100, 30],
      type: 'bar',
      name:'name3',
      barWidth: 10,
      barGap: 1, //柱子之间间距
      label: {
        show: true,
        position: "top",
        color: "white",
        rotate: 60,
        textStyle: {
          color: colors[2].color.top
        },
      },
    },
  ]
};
myChart.on("dataZoom", function (params) {
  var newoption = myChart.getOption();
  var dataZoomStart = params.start;
  var dataZoomEnd = params.end;
  if (dataZoomEnd - dataZoomStart > 70) {
    newoption.series.forEach(function (series) {
      series.label.show = false;
    });
  }else {
    newoption.series.forEach(function (series) {
      series.label.show = true;
    });
  }
  
  myChart.setOption(newoption);
})

到了这里,关于echarts图表动态监听dataZoom滑动,控制柱条的宽度以及数值的显示隐藏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue+Echarts图表动态适配

    目录 前言 一、问题背景 二、解决方案 1.在Vue组件中引入Echarts 2.初始化图表 3.监听resize事件 4.销毁图表 三、优化方案 1.防抖 2.节流 四、总结 在实际的前端开发过程中,动态适配是一个非常重要的问题。在数据可视化的场景下,图表的动态适配尤为重要。在本篇博客中,我们

    2024年02月05日
    浏览(44)
  • ECharts图表动态修改series显示隐藏

    最近做的大数据平台,里面很多部分用到了ECharts,其中有个功能,要求将图表分组,根据用户选择的组,来确定ECharts要显示那些线条和柱子,也就是动态的显示option.series。 找了一下EChart的文档,发现可以通过控制option.legend.selected,来动态设置,无论饼图、折线图、还是柱

    2024年02月10日
    浏览(38)
  • vue左侧漏斗切换 echart图表动态更新

    这个需求是根据点击左侧的箭头部分,右侧图表切换,左侧选中数据高亮(图片用的svg)    

    2024年02月11日
    浏览(41)
  • echart 图表添加数据分析功能,(右上控制选择)

    echart 图表添加数据分析功能,可区域选择数据,右上按钮,控制echart行为

    2024年02月11日
    浏览(42)
  • echarts实现横向和纵向滚动条、dataZoom

    使用 echarts 会遇到这种情况,以柱状图为例子,当数据过多时, echarts 图就会堆叠在一起,看起来十分难看。通常解决办法是通过减小 barWidth 值来缩小柱子宽度,但是若数据达到上百条,这场面是相当壮观。另一个很常用的就是在外部容器 div 添加 overflow: scroll; ,这确实能解

    2024年02月11日
    浏览(45)
  • 微信小程序使用Echarts-for-weixin实现图表动态更新数据、懒加载(干货满满!!!)

    后端开发入坑全栈之 微信小程序 + Echarts图表 上需求,如下: Apache Echarts是一个基于JavaScript的开源可视化图表库,用于创建各种类型图表,常用图表类型有柱状图、折线图、饼状图、散点图等等。废话不多说,直接上干货!耶✌ 1、下载Echart-for-weixin项目 echart-for-weixin 项目提

    2024年02月04日
    浏览(47)
  • 解决echarts配置滚动(dataZoom)后导出图片数据不全问题

    先展现一个echarts,并配置dataZoom,每页最多10条数据,超出滚动 效果: 调用echarts中getDataURL获取图表的数据 URL 问题来了:如数据不分页则可以下载全数据,如数据分页了则只能下载出可视区内容,如何解决? 解决思路:echarts最终生成了canvas,canvas的宽高就是当前可视区的宽

    2024年01月19日
    浏览(43)
  • echarts图标设置dataZoom拖拽时间轴时自动调整两侧文字的位置

    在vue项目中使用到echarts绘制图表时使用到dataZoom来选择展示某个时间区间的数据,由UI测试后发现把手柄拖拽到开始和结束时,显示的文本会被遮挡: 产品给出的解决方法是当拖到最后的时候将这个文本显示在滑块的内侧,或者是上方,避免被遮挡住;但是去看了echarts的文档

    2024年02月04日
    浏览(43)
  • 【OpenCV • c++】滑动条的创建和使用

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月07日
    浏览(41)
  • uniapp 开发微信小程序使用echart的dataZoom属性缩放功能不生效!bug记录!

    在本项目中使用的是这个echart库 在项目中添加了dataZoom配置项但是不生效,突然想到微信小程序代码大小的限制,之前的echarts.js是定制的,有可能没有加dataZoom组件。故重新定制echarts.js。之前用的echarts版本是5.0.0,这次也是定制同样的版本,但是报错,按照之前的经验判断,

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包