动态排序柱状图
相关配置
动态排序柱状图(Bar race)是一种展示数据排名随时间变化的图表,从 ECharts 5 开始默认支持。
动态排序柱状图通常使用水平柱状图。如果你想使用垂直柱状图,只需在本教程中将 X 轴和 Y 轴反转即可。
- 将柱状图系列的
realtimeSort设置为true以启用动态排序 - 将
yAxis.inverse设置为true以在顶部显示较长的柱子 - 建议将
yAxis.animationDuration设置为300,用于第一次柱状图排序动画 - 建议将
yAxis.animationDurationUpdate设置为300,用于后续柱状图排序动画 - 将
yAxis.max设置为 n - 1,其中 n 是要显示的柱子数量;否则,将显示所有柱子 - 建议将
xAxis.max设置为'dataMax',以便将数据的最大值用作 X 轴的最大值。 - 如果需要标签数值实时变化,请将
series.label.valueAnimation设置为true - 将
animationDuration设置为0,这样第一次动画就不会从 0 开始;如果你有其他需求,请将其设置为与animationDurationUpdate相同的值 - 建议将
animationDurationUpdate设置为3000作为动画更新时长,该值应与调用setOption的频率相同 - 使用
setInterval以animationDurationUpdate的频率调用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);
在线示例