echarts图表自动滚动

一、效果图

自动从一月开始向左滚动至十二月再跳转至一月循环滚动。

echarts图表自动滚动_第1张图片

二、主要代码

var timer = null;

// 自动滚动

  dataZoom: [//滑动条

    {

      show: false,//是否显示滑动条

      type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件

      startValue: 0, // 从头开始。

      endValue: 4  // 一次性展示5个。

    }

  ],

// 使用刚指定的配置项和数据显示图表。

timer = setInterval(function () {

  // 每次向后滚动一个,最后一个从头开始;

  // SData.length - 1 为数组的长度,索引从0开始,所以长度减一;

  if (option1.dataZoom[0].endValue == SData.length - 1) {

    option1.dataZoom[0].endValue = 4;

    option1.dataZoom[0].startValue = 0;

  }

  else {

    option1.dataZoom[0].endValue = option1.dataZoom[0].endValue + 1;

    option1.dataZoom[0].startValue = option1.dataZoom[0].startValue + 1;

  }

  myChart1.setOption(option1,true); // 这条不能省略;

}, 2000);

三、完整代码


var timer = null;
// 基于准备好的dom,初始化echarts实例
var myChart1 = echarts.init(document.getElementById('chart1'));
var SData = [200, 330, 300, 280, 350, 290, 180, 200, 260, 240, 300, 320];
myChart1.clear();
clearInterval(timer);

// 指定图表的配置项和数据
var option1 = {
  // 设置图表的位置
  grid: {
    x: 0, // 左间距
    y: 30, // 上间距
    x2: 0, // 右间距
    y2: 10, // 下间距
    containLabel: true // grid 区域是否包含坐标轴的刻度标签, 常用于『防止标签溢出』的场景
  },

  // dataZoom 组件 用于区域缩放
  dataZoom: [
    {
      type: 'inside',
      xAxisIndex: [0], // 设置 dataZoom-inside 组件控制的 x轴
      // 数据窗口范围的起始和结束百分比  范围: 0 ~ 100
      start: 0,
      end: 100
    }
  ],
  // 提示框组件
  tooltip: {
    trigger: 'axis', // 触发类型, axis: 坐标轴触发
    axisPointer: {
      type: 'line' // 指示器类型
    },
    textStyle: {
      color: '#fff' // 文字颜色
    },
    // 提示框浮层内容格式器,支持字符串模板和回调函数两种形式
    // 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)
    formatter: '{b}
{a0}: {c0}分' }, // X轴 xAxis: { show: true, // 不设置默认值为 true type: 'category', // 坐标轴类型, 'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据 // 坐标轴轴线 axisLine: { lineStyle: { type: 'dashed', // 坐标轴线线的类型 'solid', 'dashed', 'dotted' width: 1, // 坐标轴线线宽, 不设置默认值为 1 color: '#354069' // 坐标轴线线的颜色 } }, // 坐标轴刻度 axisTick: { show: false }, // 分隔线 splitLine: { show: false }, // 坐标轴刻度标签 axisLabel: { fontSize: fontSize(.12), // 文字的字体大小 color: '#fff', // 刻度标签文字的颜色 }, // 类目数据,在类目轴(type: 'category')中有效 data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] }, // 左侧Y轴 yAxis: [ { type: 'value', // 坐标轴类型, 'value' 数值轴,适用于连续数据 // name: '(万)', // 坐标轴名称 nameLocation: 'end', // 坐标轴名称显示位置 'start', 'middle' 或者 'center', 'end' nameTextStyle: { // 坐标轴名称的文字样式 color: '#fff', fontSize: fontSize(.12) }, // y轴数值间隔 min: 0, max: 400, splitNumber: 4, nameGap: 20, // 坐标轴名称与轴线之间的距离 // 坐标轴刻度 axisTick: { show: true // 是否显示坐标轴刻度 默认显示 }, // 坐标轴轴线 axisLine: { // 是否显示坐标轴轴线 默认显示 show: false, // 是否显示坐标轴轴线 默认显示 lineStyle: { // 坐标轴线线的颜色 color: '#204756' } }, // 坐标轴在 grid 区域中的分隔线 splitLine: { show: true, // 是否显示分隔线,默认数值轴显示 lineStyle: { type: 'dashed', color: '#204756', // 分隔线颜色 opacity: 1 // 分隔线透明度 } }, // 坐标轴刻度标签 axisLabel: { show: true, // 是否显示刻度标签 默认显示 fontSize: fontSize(.12), // 文字的字体大小 color: '#cdd3ee', // 刻度标签文字的颜色 // 使用字符串模板,模板变量为刻度默认标签 {value} formatter: '{value}' } } ], // 自动滚动 dataZoom: [//滑动条 { show: false,//是否显示滑动条 type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件 startValue: 0, // 从头开始。 endValue: 4 // 一次性展示5个。 } ], // 系列列表 series: [ // 柱状图顶部的圆片 { name: "积分", // 系列名称, 用于tooltip的显示, legend 的图例筛选 type: "pictorialBar", // 系列类型 symbolSize: [fontSize(.25), fontSize(.15)], // 标记的大小 symbolOffset: [0, -5], // 标记相对于原本位置的偏移 symbolPosition: "end", // 图形的定位位置。可取值:start、end、center // 图例的图形样式 itemStyle: { color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#21F3FF' // 0% 处的颜色 }, { offset: 1, color: '#21F3FF' // 100% 处的颜色 }] } }, z: 10, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖 data: SData // 系列中的数据内容数组 }, // 柱状图 { name: '积分', // 系列名称, 用于tooltip的显示, legend 的图例筛选 type: 'bar', // 系列类型 barWidth: fontSize(.25), // 指定柱宽度,可以使用绝对数值或百分比,默认自适应 barGap: '-100%', // 不同系列的柱间距离l,如果想要两个系列的柱子重叠,可以设置 barGap 为 '-100%'。这在用柱子做背景的时候有用 // 图例的图形样式 itemStyle: { color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#04a3ec' // 0% 处的颜色 }, { offset: 1, color: '#0f2e79' // 100% 处的颜色 }] } }, data: SData // 系列中的数据内容数组 }, // 柱状图底下的圆片 { name: "积分", type: "pictorialBar", // 系列类型 symbolSize: [fontSize(.25), fontSize(.14)], // 标记的大小 symbolOffset: [0, 5], // 标记相对于原本位置的偏移 // 图例的图形样式 itemStyle: { color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#1f63eac7' // 0% 处的颜色 }, { offset: 1, color: '#1f63eac7' // 100% 处的颜色 }] } }, z: 10, // 组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖 data: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] // 系列中的数据内容数组 }, ], }; // 使用刚指定的配置项和数据显示图表。 timer = setInterval(function () { // 每次向后滚动一个,最后一个从头开始。 if (option1.dataZoom[0].endValue == SData.length - 1) { option1.dataZoom[0].endValue = 4; option1.dataZoom[0].startValue = 0; } else { option1.dataZoom[0].endValue = option1.dataZoom[0].endValue + 1; option1.dataZoom[0].startValue = option1.dataZoom[0].startValue + 1; } myChart1.setOption(option1,true); }, 2000); myChart1.clear(); myChart1.setOption(option1,true); // 监听屏幕变化自动缩放图表 window.addEventListener("resize", function () { myChart1.resize(); });

~~~echarts图表自动滚动_第2张图片~~~

你可能感兴趣的:(echarts,前端,javascript)