切换系列时避免数据重置

Avoid data resetting when toggling series

在这个 fiddle 中,当您 toggle 一个系列时,其他人将重置为它们的初始值,而不是为自己添加新值。 如何避免这种行为?

在启用检查中清空或重置相应数据集之前,您需要存储每个系列数据的当前状态。然后使用这个保存的状态。

SP 数据集示例

状态初始化(spData)。我还初始化了数据集 (SP)

var spData = [1, 2, 3, 4, 5, 6, 7, 8]
var SP = {}

保存状态(在 enableCheck() 中)- 我从实际数据点获取值

if (SP.data) currentChart.datasets.forEach(function (d) {
    if (d.label === 'My First dataset') {
        spData = d.points.map(function (e) {
            return e.value
        });
    }
})

使用这个保存的状态(在 enableCheck() 中)

SP = {
    label: "My First dataset",
    fillColor: "rgba(0,0,0,0)",
    strokeColor: "rgba(220,0,0,1)",
    pointColor: "rgba(220,0,0,1)",
    pointStrokeColor: "#fff",
    pointHighlightFill: "#fff",
    pointHighlightStroke: "rgba(220,0,0,1)",
    data: spData
};

如果您还想为隐藏系列插入新值,请更新 setTimeout

中的数据插入语句
var d = []
if (First) d.push(randomScalingFactor())
else {
    spData.shift()
    spData.push(randomScalingFactor())
}
if (Second) d.push(randomScalingFactor())
else {
    ncData.shift()
    ncData.push(randomScalingFactor())
}
if (Third) d.push(randomScalingFactor())
else {
    spaData.shift()
    spaData.push(randomScalingFactor())
}

工作 fiddle - http://jsfiddle.net/Lsg37amf/