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 );

这将创建两个“指针”。第一个将从位置 0 开始,第二个从位置 180 开始。该函数将在两个指针之间交替,为图形提供一种“棋盘”外观。

如果您不喜欢这种效果,最好的选择可能是具有 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 回答