动态排序条形图

条形图竞速是一种显示数据排名随时间变化的图表,ECharts 5 默认支持。

条形图竞速通常使用水平条形图。如果想使用垂直条形图,只需将本教程中的 X 轴和 Y 轴对调即可。

  1. 将条形图系列的 realtimeSort 设置为 true 以启用条形图竞速。
  2. yAxis.inverse 设置为 true 以将较长的条形图显示在顶部。
  3. 建议将 yAxis.animationDuration 设置为 300,以便首次进行条形图重新排序动画。
  4. 建议将 yAxis.animationDurationUpdate 设置为 300,以便后续进行条形图重新排序动画。
  5. yAxis.max 设置为 n - 1,其中 n 是要显示的条形图数量;否则,将显示所有条形图。
  6. 建议将 xAxis.max 设置为 'dataMax',以便将数据的最大值用作 X 轴的最大值。
  7. 如果需要实时更改标签,请将 series.label.valueAnimation 设置为 true
  8. animationDuration 设置为 0,以便第一个动画不从 0 开始;如果希望从 0 开始,请将其设置为与 animationDurationUpdate 相同的值。
  9. 建议将 animationDurationUpdate 设置为 3000,以便动画更新持续时间,该持续时间应与调用 setOption 的频率相同。
  10. animationDurationUpdate 的频率,使用 setInterval 调用 setOption 更新为下一个时间点的数据。

示例

完整示例

var data = [];
for (let i = 0; i < 5; ++i) {
  data.push(Math.round(Math.random() * 200));
}

option = {
  xAxis: {
    max: 'dataMax'
  },
  yAxis: {
    type: 'category',
    data: ['A', 'B', 'C', 'D', 'E'],
    inverse: true,
    animationDuration: 300,
    animationDurationUpdate: 300,
    max: 2 // only the largest 3 bars will be displayed
  },
  series: [
    {
      realtimeSort: true,
      name: 'X',
      type: 'bar',
      data: data,
      label: {
        show: true,
        position: 'right',
        valueAnimation: true
      }
    }
  ],
  legend: {
    show: true
  },
  animationDuration: 0,
  animationDurationUpdate: 3000,
  animationEasing: 'linear',
  animationEasingUpdate: 'linear'
};

function run() {
  var data = option.series[0].data;
  for (var i = 0; i < data.length; ++i) {
    if (Math.random() > 0.9) {
      data[i] += Math.round(Math.random() * 2000);
    } else {
      data[i] += Math.round(Math.random() * 200);
    }
  }
  myChart.setOption(option);
}

setTimeout(function() {
  run();
}, 0);
setInterval(function() {
  run();
}, 3000);
在线演示

贡献者 在 GitHub 上编辑此页面

Ovilia Oviliapissang pissangShofol Shofol