echarts实现柱状图自动轮播/鼠标悬浮悬停/y轴数值显示不全/浏览器窗口变化导致宽高不及时响应

一.echarts实现柱状图自动轮播/鼠标悬浮悬停

1.dataZoom配置

 dataZoom: [
                    //滑动条
                    {
                        xAxisIndex: 0, //这里是从X轴的0刻度开始
                        show: false, //是否显示滑动条,不影响使用
                        type: "inside", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
                        startValue: 0, // 开始位置。
                        endValue: 1, // 一次性展示几个。(如果startValue设定为0,那么页面展示数就是endValue+1,比如此例页面展示2个)
                    }
                ],

2.我封装了一个方法utils/carousel.js

//传入四个配置项,option, myChart,t:定时轮播时间,endValue:控制展示数
export function carouselFn(option, myChart,t,endValue) {
  option && myChart.setOption(option);
  let kk = setInterval(() => {
    // 每次向后滚动一个,最后一个从头开始。
    if (option.dataZoom[0].endValue == option.xAxis[0].data.length) {
      option.dataZoom[0].endValue = endValue;
      option.dataZoom[0].startValue = 0;
    } else {
      option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1;
      option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1;
    }
    option && myChart.setOption(option);
  }, t);

  myChart.on("mouseover", (params) => {
    // 鼠标悬浮,停止自动轮播
    if (kk) clearInterval(kk);
  });

  myChart.on("mouseout", (params) => {
    // 鼠标移出,重新开始自动轮播
    if (kk) clearInterval(kk);
    kk = setInterval(() => {
      // 每次向后滚动一个,最后一个从头开始。
      if (option.dataZoom[0].endValue == option.xAxis[0].data.length) {
        option.dataZoom[0].endValue = endValue;
        option.dataZoom[0].startValue = 0;
      } else {
        option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1;
        option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1;
      }
      option && myChart.setOption(option);
    }, t);
  });
}

  3.页面使用

3.1引入

 3.2调用

 二.echarts柱状图y轴数值显示不全

1.实现数值自适应

grid: {
					top: '15%',
					right: '2%',
					left: '2%',
					bottom: '2%',
					containLabel: true
				},

 2.此时会想到数值会越来越大,比如营收金额,会随着时间越来越大,在yAxis中配置

 

		axisLabel: {
							// formatter: '{value}',
							formatter(v) {
								v = v.toString()
								if (v >= 100000000000) {
									return (v.substring(0, 5) / 10) + '亿'
								} else if (v >= 10000000000) {
									return (v.substring(0, 4) / 10) + '亿'
								} else if (v >= 1000000000) {
									return (v.substring(0, 3) / 10) + '亿'
								} else if (v >= 100000000) {
									return (v.substring(0, 2) / 10) + '亿'
								} else if (v >= 10000000) {
									return v.substring(0, 4) + '万'
								} else if (v >= 1000000) {
									return v.substring(0, 3) + '万'
								} else if (v >= 100000) {
									return v.substring(0, 2) + '万'
								} else if (v >= 10000) {
									return (v.substring(0, 2) / 10) + '万'
								} else if (v >= 1000) {
									return v
								} else {
									return v
								}
							}
				
						},

  效果:

 三.echarts图表不能跟着浏览器窗口变化及时更新容器宽高,在我首次切换全屏的时候,高度会溢出父盒子,手动刷新就会恢复正常,如下:

解决:监听浏览器窗口变化,重新渲染echarts表格

  window.addEventListener('resize',()=>{
                    myChart.resize()
            });

 

posted @ 2023-11-14 15:40  零零七啊  阅读(1681)  评论(0编辑  收藏  举报