1

Microsoft Chart Controlsを使用してグラフを描画しており、グラフの線ごとに異なる色(最大約15〜20色)を生成しようとしています。描画する線が14本ある場合は、それぞれに異なる色を作成したいと思います。

今、私はHSVを使用してこれを試しました:

private Color GetSeriesColor(int seriesIndex,
                             int seriesCount)
{
    return ColorHelper.FromHsv(360.0*seriesIndex/seriesCount, 1, 1);
}

ただし、問題は、緑と青の色が非常に似ていることです。

ここに画像の説明を入力してください

C#で、人間とは異なって見えるx色を作成する方法はありますか?

4

1 に答える 1

1

それぞれがスペクトル内の異なる場所を指しているデュアル ポインターを試すことができます。少なくともこの方法では、交互の色になってしまいます。

private Color GetSeriesColor( int seriesIndex, 
                              int seriesCount, 
                              int steps ) {
    return ColorHelper.FromHsv( 
        ( 360.0 / steps ) * ( 1.0 * seriesIndex / seriesCount ) + 
        ( ( seriesIndex % steps ) * ( 360.0 / steps ) ),
        1, 1 );
}

呼び出しコード:

GetSeriesColor( 5, 18, 2 );

これにより、2 つの「ポインター」が作成されます。1 つ目は位置 0 から開始し、2 つ目は位置 180 から開始します。関数は 2 つのポインターを交互に切り替え、グラフに一種の「チェッカーボード」の外観を与えます。

効果が気に入らない場合は、x 個の事前定義された色を含むカラー パレット (配列に格納されている) を使用し、最後に達したときにループする (または、暗い色を明るい色にするなどのシェーディングを追加する) ことをお勧めします。色)。

編集
ただし、色分けを意地悪に使用することは、多くの場合、設計上の選択として不適切であることを付け加えておきます。可能であれば、グラフ上で直接ラベルを使用する方がよいでしょう。約 8 色を超えると、人間の目はそれらを区別するのに苦労し始めます。https://ux.stackexchange.com/questions/17964/how-many-visually-distinct-colors-can-accurately-be-associated-with-a-separateを参照してください。

于 2012-10-15T14:55:24.130 に答える