美文网首页程序员
vue+echarts 实现横向柱状图自动滚动与鼠标滚轮滑动

vue+echarts 实现横向柱状图自动滚动与鼠标滚轮滑动

作者: 马铃薯a | 来源:发表于2022-05-11 21:28 被阅读0次

    实现功能:
    柱状图定时滚动同时可以用鼠标滚轮控制滚动

    不多说,直接上源码:

    <!-- 横向柱状图测试结果 -->
    <template>
      <div>
        <h3>横向柱状图测试</h3>
        <div style="width: 500px; height: 500px; background-color: antiquewhite">
          <div id="heng" style="width: 100%; height: 100%;" ></div>
        </div>
      </div>
    </template>
    
    <script>
    // import * as echarts from 'echarts';
    
    export default {
      name: "hengzhu",
        data() {
            return {
              // data: [1000, 800, 600, 500, 540, 1100, 528, 55, 66, 588, 980, 563, 578, 154, 55, 66, 55, 66, 452, 652]
              // data: [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000]
              data: [2000, 1900, 1800, 1700, 1600, 1500, 1400, 1300, 1200, 1100, 1000, 900, 900, 800, 700, 600, 500, 400, 300, 200],
              start: 0,
              end:5
            }
        },
        created() {
          this.dingshi();
        },
        mounted() {
          this.heng();
          // this.dingshi();
        },
        methods: {
          heng() {
            // let that = this;
            // alert("执行");
    
            let chartDom = document.getElementById('heng');
            let myChart = this.$echarts.init(chartDom);
            let option = {
              title: {
                text: 'World Population'
              },
              tooltip: {
                trigger: 'axis',
                axisPointer: {
                  type: 'shadow'
                }
              },
              legend: {},
              grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
              },
              xAxis: {
                type: 'value',
                // boundaryGap: [0, 0.01]    // 柱图距离边界的距离
              },
              yAxis: {
                type: 'category',
                inverse: true,    // ture: 从上到下显示, 默认:从下到上显示,下面的数值会跟着变动
                data: ['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh', 'ii', 'jj', 'kk', 'll', 'mm', 'nn', 'oo', 'pp', 'qq', 'rr', 'ss', 'tt'],
              },
              dataZoom: {
                type: 'inside',     // inside: 表示用内测滑块
                startValue: this.start,     // 开始显示的数
                endValue: this.end,       // 结束显示的数
                yAxisIndex: [0],    // 代表是作用在y轴上的
                // start: '10',
                // end: '1'
                // zoomLock: true,
                zoomOnMouseWheel: false,  // 关闭滚轮缩放
                moveOnMouseWheel: true, // 开启滚轮平移
                moveOnMouseMove: true  // 鼠标移动能触发数据窗口平移
    
              },
              series: [
                {
                  type: 'bar',
                  // realtimeSort: true,   // 这个可以与 yAxis-inverse 配合,让数据正序显示还是逆序显示
                  data: this.data
                },
              ]
            };
            myChart.setOption(option);
            // setInterval(function () {
            //   this.data = [1000, 800, 600, 500, 540, 1100, 528, 55, 66, 588, 980, 563, 578, 154, 55, 66, 55, 66, 452, 1200]
            // }, 2000)
          },
    
          /** 定时跳动 */
          dingshi() {
            let that = this;
            setInterval(function () {
              if (that.end == that.data.length){
                that.start = 0;
                that.end = 5;
              } else {
                that.start = that.start + 1;
                that.end = that.end + 1;
              }
              that.heng();
            }, 3000)
          }
        }
    }
    </script>
    
    <style scoped>
    
    </style>
    
    
    

    相关文章

      网友评论

        本文标题:vue+echarts 实现横向柱状图自动滚动与鼠标滚轮滑动

        本文链接:https://www.haomeiwen.com/subject/lkejurtx.html