这是我的情况http://jsfiddle.net/co3L0bdb/4/
感谢@potatopeelings帮助我现在能够将属性highlightFill
设置为我的所有datasets
,即使我在图表中显示/隐藏一个系列也是如此。
我补充说:
currentChart.datasets[0].points[8].highlightStroke = "rgba(220,0,0,1)";
currentChart.datasets[1].points[8].highlightStroke = "rgba(0,255,0,1)";
currentChart.datasets[2].points[8].highlightStroke = "rgba(0,0,255,1)";
但我得到的,但我不想,是当我隐藏一个系列时,在2次迭代后它开始绘制隐藏数据并停止删除该系列的第一个数据。
如何在没有描述副作用的情况下设置偶数系列特性,例如highlightStroke
?
答案 0 :(得分:0)
不要将dataset属性设置为空对象,而是根本不要将它包含在数据集中。所以
data = { labels: chartlabel, datasets: [SP, NC, SPA] };
变为
data = {
labels: chartlabel,
datasets: []
};
if (SP.label !== undefined) data.datasets.push(SP)
if (NC.label !== undefined) data.datasets.push(NC)
if (SPA.label !== undefined) data.datasets.push(SPA)
在2个地方
通过循环替换数据插入,点属性设置(而不是为3个数据集对其进行硬编码)。所以
setInterval(function() { currentChart.addData([randomScalingFactor(), randomScalingFactor(), randomScalingFactor()], ++latestLabel); currentChart.datasets[0].points[8].highlightStroke = "rgba(220,0,0,1)"; currentChart.datasets[1].points[8].highlightStroke = "rgba(0,255,0,1)"; currentChart.datasets[2].points[8].highlightStroke = "rgba(0,0,255,1)";
变为
var d = []
currentChart.datasets.forEach(function(e) {
d.push(randomScalingFactor())
})
currentChart.addData(d, ++latestLabel);
currentChart.datasets.forEach(function(dataset) {
dataset.points[8].highlightStroke = dataset.points[0].highlightStroke;
})
新点的highlightStroke将从highlightStroke复制到同一系列的第一个点。
答案 1 :(得分:0)
currentChart2.datasets.forEach(function(e) {
e.points[e.points.length - 1].highlightFill=e.points[0].highlightFill;
e.points[e.points.length - 1].highlightStroke=e.points[0].highlightStroke;
});
Solves the problem too. http://jsfiddle.net/co3L0bdb/5/