3

私はダイグラフで作成された折れ線グラフを持っています。すべてのデータは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_["シリーズID"] = "#FFFFFF";

g.updateOptions("グラフを再描画する任意のオプション");

updateOptions の呼び出しを含まずにグラフを再描画または更新する方法はありますか?

ありがとう!

4

3 に答える 3

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 に答える