echarts X轴内容可滑动Y轴固定的常用配置项(解决echarts数据量太多的显示问题)

本文分享了在使用ECharts时遇到X轴数据过多导致显示不佳的问题及解决方案。通过详细配置项,如X轴刻度间隔调整、数据展示优化等,有效解决了X轴数据密集难以阅读的问题。

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

在使用echarts插件时,经常遇到X轴数据量过大的问题,这个时候X轴的数据就会层叠到一起.致使页面效果非常难看!之前用来开发的配项目就是如此;所以就将一些常用的配置项放在这里,希望对你们有用!

注:该配置只是折线图的配置,如果是柱状图的配置大同小异,配置项的作用不会又多大变动.我是把这个配置项option做了一个函数的封装

let  myChart = echarts.init(document.getElementById('oneDay'));
let allXdata =['',1,2,3,4,5,6];
let lineRes = ['',2,2,3,4,3,3];
let dayOption= getOption(allXdata,lineRes);
myChart.setOption(dayOption);

function getOption(allXdata,lineRes){
            return{
                animation: false, //控制当前的点击滑动时节点是否放大
                title: {
                    text: '2018-10-16',
                    padding:20,
                    textStyle:{
                        fontSize:14,
                        fontWeight:500
                    }
                },
                tooltip: { // 可以自定义点击时出现的提示框,你可以尝试打印params
                    show:true,
                    // formatter: function (params) {
                    //     console.log(params);
                    // }
                },
                legend: {

                },
                grid: {
                    left: '4%', //设置Y轴name距离左边容器的位置,类似于margin-left
                    right: '4%',
                    bottom: '2%',
                    containLabel: true
                },
                dataZoom: [
                    { //Y轴固定,让内容滚动
                        type: 'slider',
                        show: false,
                        xAxisIndex: [0],
                        start: 1,
                        end: 80,//设置X轴刻度之间的间隔(根据数据量来调整)
                        zoomLock: true, //锁定区域禁止缩放(鼠标滚动会缩放,所以禁止)
                    },
                    {
                        type: 'inside',
                        xAxisIndex: [0],
                        start: 1,
                        end: 80,
                        zoomLock: true, //锁定区域禁止缩放
                    },

                ],
                xAxis: [{
                    data: allXdata, //X轴数据(该数组的第一个数据为'' 可以让原点数据为0)
                    boundaryGap: false, //两边是否留白
                    axisLabel: {
                        interval: 0, //隔多少点显示一个X轴刻度,0就是全部显示
                        formatter: function (value, index) {//自定义X轴的显示
                            var date = new Date(value);
                            var texts = date.getMonth()+1+"月";
                            if (index === 0) {
                                texts=0;
                            }
                            return texts;
                        }
                    },
                    axisTick: {
                        inside: true,
                        lignWithLabel: true //这两行代码可以让刻度正对刻度名
                    },
                    // axisLine: {
                    //     symbol: ['none', 'arrow'], //显示坐标轴上的箭头
                    //     symbolSize: [8, 10], //调整坐标箭头的大小
                    //     symbolOffset: [5, 8], //箭头的偏移位置
                    //     onZero: false
                    // },
                    axisPointer: {
                        lineStyle: {
                            width: 0 //隐藏指示线的线条
                        },
                        show: true,
                        snap: true,
                        status: 'show'
                    }
                }],
                yAxis: {
                    name: '', //Y轴名字
                    nameGap: 20, //刻度与Y轴线名字之间的距离
                    nameTextStyle: { //Y轴名字的样式
                        color: '#000',
                        fontSize: 14
                    },
                    // min: minax2.min, //设置Y轴的最大最小值
                    // max: minax2.max,
                    splitLine: {
                        show: false
                    }, //去掉网格线
                    // axisLine: {
                    //     symbol: ['none', 'arrow'], //是否显示箭头
                    //     symbolSize: [8, 10], //调整坐标箭头的大小
                    //     symbolOffset: [5, 7] //调整箭头的偏移位置
                    // },
                    axisTick: {
                        // show:true,//是否显示Y轴的刻度
                        inside: false //改变刻度的朝向
                    }
                },
                series: [{
                    data: lineRes,
                    type: 'line',
                    symbol: 'circle', //折线拐点去掉圆点
                    symbolSize: 1,
                    itemStyle: {
                        normal: {
                            color: '#000', //自定义折线点颜色
                            lineStyle: {
                                color: '#000'//自定义折线的颜色
                            }
                        }
                    },
                    smooth: true //折线变曲线
                },

                ]
            }
        }

 

ECharts 是一个非常流行的开源数据可视化库,尤其在中国大陆很受欢迎。柱状图是 ECharts常用的一种图表类型,用于展示类别与数值之间的对比。如果你想要实现在左侧滑动时动态隐藏或移除柱状图的一部分,可以利用 ECharts滑动事件监听和数据区间的控制功能。 首先,在初始化 ECharts 实例时,设置 `option` 配置项包含 x 的数据范围,并将其绑定到某个元素上,如滑块: ```javascript var myChart = echarts.init(document.getElementById('main')); // 假设你有如下数据 var data = [ ... // 一系列柱状图数据 ]; myChart.setOption({ xAxis: { type: 'category', boundaryGap: true, // 设置x间无间隙 data: ['Category1', 'Category2', ..., 'CategoryN'], // 定义所有分类 range: [0, 'dataLength'] // 初始化显示前几个分类 }, yAxis: {}, // 其他 y 配置... series: [{ type: 'bar', data: data }], scrollPosition: {left: '0%'}, // 设置默认左滑距离 event: { dragEnd: function (event) { var newX = event.offsetX; // 当用户停止拖动时获取新的偏移值 var visibleCategories = []; // 新的可见分类数组 if (newX > 0) { // 如果滑动了左边 var categoryIndex = Math.floor(newX / myChart.getWidth()); // 计算当前应该隐藏的分类索引 for (var i = 0; i <= categoryIndex; i++) { visibleCategories.push(data[i].name); } myChart.setOption({ xAxis: { range: [0, visibleCategories.length] } }); } else { myChart.setOption({ xAxis: { range: [0, 'dataLength'] } }); // 展示全部分类 } } } }); ``` 在这个例子中,当用户在左侧滑动时,会触发 `dragEnd` 事件,根据新的偏移量动态更新 X 的可视区间,从而达到隐藏部分柱状图的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值