请问如何用 ECharts 实现这种图表慢慢向左移动的效果?
上如是 Chrome 开发工具 Monotor 的效果,我想用 ECharts 实现类似的效果,但是效果不理想。
谢谢。
请问如何用 ECharts 实现这种图表慢慢向左移动的效果?
上如是 Chrome 开发工具 Monotor 的效果,我想用 ECharts 实现类似的效果,但是效果不理想。
谢谢。
解决方案代码:
let baseTime = Date.now();
let data = [];
// 初始化图表
let chart = echarts.init(document.getElementById('main'));
// 配置项
let option = {
xAxis: {
type: 'value',
min: 0,
max: 10,
show: false // 隐藏x轴
},
yAxis: {
type: 'value',
min: 0,
max: 100,
splitLine: { show: false } // 隐藏网格线
},
series: [{
type: 'line',
smooth: true,
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0, color: 'rgba(75, 162, 246, 0.6)'
}, {
offset: 1, color: 'rgba(75, 162, 246, 0.1)'
}])
},
data: data
}],
animationDuration: 300, // 过渡动画时长
animationEasing: 'linear'
};
// 实时更新函数
setInterval(() => {
// 生成新数据(模拟CPU占用率)
let newValue = Math.random() * 80 + 20;
let timestamp = Date.now() - baseTime;
// 保持数据长度(控制显示窗口)
if (data.length > 50) {
data.shift();
}
data.push([timestamp, newValue]);
// 动态调整x轴范围(关键移动效果)
option.xAxis.min = timestamp - 10000; // 10秒时间窗口
option.xAxis.max = timestamp;
chart.setOption(option);
}, 200); // 每200ms更新一次
实现原理说明:
shift()
移除旧数据,push()
新增数据)setInterval
定时器模拟实时数据更新(实际使用时替换为真实数据源)animationDuration: 300
实现平滑过渡效果调试建议:
setInterval
间隔(200ms)控制刷新频率与Chrome Monitor的差异处理:
建议设置grid布局去除边距:
grid: {
top: 0,
right: 0,
bottom: 0,
left: 0
}
10 回答10.7k 阅读
3 回答11.4k 阅读✓ 已解决
2 回答11.4k 阅读✓ 已解决
5 回答4.4k 阅读✓ 已解决
2 回答11.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答4.7k 阅读✓ 已解决
保存为 cpu.html 浏览器打开可以直接看到效果