Dygraphs改变每个系列的颜色

时间:2013-09-11 07:35:49

标签: javascript dygraphs

我有一个用dygraphs完成的折线图,所有数据都是使用Datatable添加的,所以它有一系列可变的系列和数据点。

我想要做的就是指定每个系列颜色。我知道我可以在构造函数中使用这样的数组。

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,如何指定系列颜色?

提前致谢, 巴勃罗

  编辑:我找到了一个非常有效的解决方法。我可以改变   通过设置" colorsMap _"中的值来显示系列的颜色和   然后重新绘制图形:

     

g.colorsMap _ [" SeriesID"] =" #FFFFFFF&#34 ;;

     

g.updateOptions("任何选项,以便重新绘制图表");

     

有没有重绘或刷新图表的方法   包括调用updateOptions?

     

谢谢!

3 个答案:

答案 0 :(得分:1)

回答可能为时已晚,但@pablito是正确的,应该有一个使用updateOptions直接更改颜色的选项。目前,不支持此功能,因此我们必须忍受黑客攻击。如果我们使用黑客

SET `goldbalance` = `goldbalance` + 100,

如上所述,它可以工作,但问题是Dygraph在放大或缩小后不记得更改。要使Dygraph记住更改,请实现以下

g.colorsMap_["SeriesID"] = "#FFFFFF";
g.updateOptions({});

答案 1 :(得分:1)

我在尝试解决这个问题时来到这里,所以我想添加一个更新的答案,希望它可以帮助别人。

从Dygraphs 2.0(contains breaking changes)开始,可以格式化单个系列。

您可以在选项中设置以下内容:

{
    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文件或标签数组中的系列名称。

您可以尝试阅读有关series options的文档,但我个人并不清楚这一点。 This demo对我更有帮助。

答案 2 :(得分:0)

您应该在初始构造函数中定义比系列中更多的颜色:忽略超出系列数的额外条目。之后,当您添加系列时,将使用额外的颜色。显然,您需要决定要处理的最大系列数。