切换系列时避免数据重置

时间:2015-06-17 07:43:18

标签: javascript linechart chart.js

在这fiddle toggle当你' Define Last Column with a value LastCol = Sheets("Filter").Cells(20, Sheets("Filter").Columns.Count).End(xlToLeft).Column Col_Letter = Split(Cells(1, LastCol).Address(True, False), "$")(0) ' Read Data into variable test = Sheets("Filter").Range("B20:" & Col_Letter & "20").Value 系列时,其他人会重置为初始值,而不是为自己添加新值。 如何避免这种行为?

1 个答案:

答案 0 :(得分:0)

您需要在消隐或重置enableCheck中的相应数据集之前存储每个系列的当前数据状态。然后使用这个保存状态。

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())
}

工作小提琴 - http://jsfiddle.net/Lsg37amf/