echarts 折线图中如何保证数据在动态刷新的时候拖拽markline不重置
时间: 2024-03-19 19:44:48 浏览: 62
要保证数据在动态刷新的时候拖拽markline不重置,需要在使用 echarts 折线图时设置 `animation: false`,这样数据更新后就不会触发动画效果,markline 的位置也就不会重置。同时,为了保证用户在拖拽 markline 时能够实时获取到最新的数据,可以通过监听 `mouseup` 和 `touchend` 事件来获取用户最终拖拽的位置,并通过 echarts 提供的 `setOption` 方法手动更新 markline 的位置。具体代码实现可以参考以下示例:
```javascript
var myChart = echarts.init(document.getElementById('chart'));
// 设置折线图配置项
var option = {
animation: false, // 禁用动画效果
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line',
markLine: {
data: [{
type: 'average',
name: '平均值'
}],
label: {
formatter: '{b}: {c}'
},
draggable: true, // 开启 markline 拖拽功能
animation: false, // 禁用 markline 动画效果
onDrag: function(params) {
// 拖拽 markline 时更新 markline 的位置
myChart.setOption({
series: [{
markLine: {
data: [{
yAxis: params.yAxis[0].value
}]
}
}]
});
}
}
}]
};
// 渲染折线图
myChart.setOption(option);
// 监听鼠标松开事件
document.addEventListener('mouseup', function() {
// 更新 markline 的位置
myChart.setOption({
series: [{
markLine: {
data: [{
yAxis: myChart.getModel().getSeries()[0].getData().getSum() / 7 // 计算平均值
}]
}
}]
});
});
// 监听触摸结束事件
document.addEventListener('touchend', function() {
// 更新 markline 的位置
myChart.setOption({
series: [{
markLine: {
data: [{
yAxis: myChart.getModel().getSeries()[0].getData().getSum() / 7 // 计算平均值
}]
}
}]
});
});
```
阅读全文