我正在使用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颜色?
答案 0 :(得分: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。