3

我有一个使用 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"] = "#FFFFFF";

g.updateOptions("重绘图形的任何选项");

是否有任何方法可以重绘或刷新不包括调用 updateOptions 的图形?

谢谢!

4

3 回答 3

2

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

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

您可以尝试阅读有关系列选项的文档,但我个人并没有那么清楚。这个演示对我更有帮助。

于 2018-03-22T11:28:30.347 回答
1

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

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

如上所述,它可以工作,但问题是 Dygraph 不记得放大或缩小后的更改。要让 Dygraph 记住更改,请执行以下操作

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_);
于 2015-05-26T14:31:32.500 回答
0

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

于 2013-09-11T07:51:00.220 回答