Javascript 动态图改变每个系列的颜色
我用动态图做了一个折线图,所有的数据都是用一个数据表添加的,所以它有一个可变数量的序列和数据点 我只想指定每个系列的颜色。我知道我可以像这样在构造函数中使用数组Javascript 动态图改变每个系列的颜色,javascript,dygraphs,Javascript,Dygraphs,我用动态图做了一个折线图,所有的数据都是用一个数据表添加的,所以它有一个可变数量的序列和数据点 我只想指定每个系列的颜色。我知道我可以像这样在构造函数中使用数组 colors: ["#7FFF00", "#00FFFF", "#008080", "#00BFFF", "#FFD700", "#FF69B42", "#20B2AA", "#FF0000", "#FFFF00", "#FF1493", "#000080", "#00FF00", "#
colors:
["#7FFF00", "#00FFFF", "#008080", "#00BFFF", "#FFD700", "#FF69B42", "#20B2AA",
"#FF0000", "#FFFF00", "#FF1493", "#000080", "#00FF00", "#6B8E23", "#00FA9A",
"#B0C4DE", "#F0E68C", "#DAA520"]
,
但正如我之前所说的,数列的数量是可变的和未知的。我知道我可以像这样更新特定系列的选项:
g.updateOptions({
'S1001': {
strokeWidth: 10,
drawPoints: true,
pointSize: 4,
highlightCircleSize: 6,
}
});
其中S1001是该系列的名称,但我找不到任何更改其颜色的选项
如果我知道序列ID,如何指定序列颜色
提前感谢,,
巴勃罗
编辑:我找到了一个很好的解决办法。我可以改变
通过设置“颜色映射”中的值来确定系列的颜色,以及
然后重新绘制图形,以便:
g、 颜色贴图[“SeriesID”]=“FFFFFF”
g、 updateOptions(“重新绘制图形的任何选项”)
是否有任何方法可以重新绘制或刷新图形
包括调用updateOptions
谢谢
您应该定义比初始构造函数中的系列更多的颜色:超出系列数量的额外条目将被忽略。稍后,当您添加系列时,将使用额外的颜色。显然,您需要决定要处理的系列的最大数量。回答可能太晚了,但是@pablito正确的是,应该有一个选项可以使用updateOptions直接更改颜色。目前,该功能不受支持,因此我们不得不忍受黑客攻击。如果我们使用黑客
g.colorsMap_["SeriesID"] = "#FFFFFF";
g.updateOptions({});
如上所述,它可以工作,但问题是,一旦放大或缩小,动态图就记不住这些变化。要使动态图记住更改,请实现以下步骤
g.colorsMap_["SeriesID"] = "#FFFFFF";
g.updateOptions({});
g.user_attrs_.colors[index] = "#FFFFFF"; // Where index is index number of the SeriesID
Dygraph.updateDeep(g.user_attrs_, g.user_attrs_);
我来这里是为了解决这个问题,所以我添加了一个更新的答案,希望它能帮助其他人 从Dygraphs 2.0开始,可以格式化单个系列 您可以在选项中设置以下内容:
{
series: {
mySeriesName: {
color: "green", //Accepts CSS colour values.
//There are other properties you can set too:
strokeWidth: 3,
drawPoints: true,
pointSize: 5,
highlightCircleSize: 7
}
}
}
将“mySeriesName”替换为CSV文件或标签数组中给定的系列名称
您可以尝试阅读有关的文档,但我个人并不觉得所有这些都那么清楚。对我更有帮助 但是我感兴趣的是通过名字改变一个特定系列的颜色。啊,这个想法对你没有帮助!如果有一个调色板就好了,这样每个系列都可以有一个调色板索引,它指向一个特定的颜色表条目。然后你可以通过改变调色板索引来切换颜色。也许你可以提交一份bug报告来请求这个?