irpas技术客

解决echarts x轴数据太多造成重叠的问题_神经介质_echarts x轴数据太多

大大的周 3218

问题描述: x轴数据太多,且坐标轴标签文字较多,想要把数据全部展示出来会造成文字重叠。 解决思路: echarts提供了dataZoom组件用于区域缩放,但下载的截图只能体现当前展示的内容,可以做成默认正常展示前几个,收缩到一定程度的时候改变axisLabel的角度,斜着展示。 解决步骤:

控制展示文字长度,设置axisLabel,如果字符串长度大于6,则中间的内容用‘…’代替 myOption.xAxis.axisLabel = { show: true, interval: 0, rotate: 0, formatter: function(value) { let val = value.length > 6 ? value.substr(0, 3) + "..." + value.substr(value.length - 3, value.length - 1) : value; return val; }, } 设置dataZoom,根据x轴数据的多少控制dataZoom是否展示和有效 let count = 6; let showDataZoom = chartInfo.xData.length <= count ? false : true; let settingEnd = (count / chartInfo.xData.length) * 100; myOption.dataZoom = [ { show: showDataZoom, // 是否展示 xAxisIndex: [0], // 控制第一个x轴 height: 15, left: 100, right: 100, bottom: 0, start: 0, // 数据窗口范围的起始百分比。范围是:0 ~ 100。表示 0% ~ 100%。 end: settingEnd, // 数据窗口范围的结束百分比。范围是:0 ~ 100。 handleSize: "110%", zoomLock: true, //是否锁定选择区域(或叫做数据窗口)的大小。如果设置为 true }, { type: "inside", // 内置型数据区域缩放组件,用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系 show: showDataZoom, disabled: !showDataZoom, // 是否停止组件的功能 height: 15, left: 100, right: 100, start: 0, end: settingEnd, }, ];

监听缩放事件,当收缩到一定程度的时候(end >= settingEnd),改变axisLabel的旋转角度rotate,根据不同的触发方式,会产生两种类型的参数。滚轮滚动时获取到的参数是一个对象,对象中的batch属性是一个数组,需要获取的end和start在数组第一项中的对象中;鼠标拖动时获取到的也是一个对象,但可以在对象中直接获取end和start的值。

滚轮滚动触发的‘dataZoom’事件参数: 鼠标拖动触发的‘dataZoom’事件参数:

鼠标滚轮滚动时缩放,将获取到的数值赋值给设置的myOption.dataZoom的end属性,start属性设置为0,确保缩放的时候start为0不变,只变更end的值。当end大于等于设定的settingEnd时,设置axisLable旋转角度为35,小于时复原。

myChart.on('dataZoom', params => { //consoloe.log(params) let start = 0; let end = 0; if(params.batch) { // 鼠标滚轮触发 start = 0; end = params.batch[0].end; myOption.dataZoom[0].start = start; myOption.dataZoom[0].end = end; myOption.dataZoom[1].start = start; myOption.dataZoom[1].end = end; if(end >= settingEnd) { myOption.xAxis[0].axisLabel.rotate = 35; } else { myOption.xAxis[0].axisLabel.rotate = 0; } myChart.setOption(myOption); } else { // 鼠标拖动触发 } })


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #echarts #x轴数据太多 #解决echarts #解决思路