获取图表/表格的下一个颜色?

时间:2013-06-10 07:40:14

标签: c# .net winforms

我有一些桌子/图表。我为他们添加了系列。每个系列都用颜色标识。

我正在搜索如何为我添加到系列中的系列选择最佳颜色。

根据已使用的颜色,目标是获得下一个最佳颜色。由于我可以添加/删除系列,我不能只有一个颜色数组并在列表中选择下一个颜色。

我听说有一些MS指南(只发现了这个excel的等价物)

有任何想法/链接/方法吗?

编辑:找到this,提供有关颜色对比的有趣信息

EDIT2: 我尝试使用“颜色色调轮”:我只将轮子除以我需要的颜色数量,然后在位置开始时采用颜色。如果我们想要以不同的颜色开始,我还提供了一种放置偏移的方法。

它有效,我有不同的颜色,但我的印象是我们可以做得更好。例如。偏移210°,6种颜色,我有这些颜色: enter image description here 我认为这只是一种视错觉,但最后两种颜色似乎比其他颜色更接近。问题是我要处理用户的眼睛。

整个“Hue”看起来像enter image description here 通过眼睛,我们可以看到有些颜色看起来比其他颜色更像(如青色)。对我来说,绿色似乎比黄色更大,......

似乎它存在一个颜色为perceptually linear colors的概念,你知道是否有算法允许我得到一个感知线性颜色数组?然后,我很容易采取我需要的颜色

2 个答案:

答案 0 :(得分:0)

看看How to automatically generate N "distinct" colors?,但......

这是我在遇到类似问题时所做的。

我创建了32个分布均匀且颜色鲜明的表格。我做过一次。当我必须出现超过32时,我只重复颜色。我决定32个不同的系列对于我的数据集来说已经足够好了(我不知道在现实生活场景中实际上已经使用了32个以上的系列)。

当你超过参考表的大小时,使用对其添加11111的粗略更改,可以稍微改变颜色。

我发现这是一种非常简单的方法,几乎​​没有错误的余地。

大多数(全部?)算法采用所需颜色的数量并生成不同颜色的列表会遇到在添加新颜色时更改现有系列颜色的问题,我发现阻塞程序正如用户通常所期望的那样系列X是黑色而系列Y是黄色等,即使他们添加了一个新的系列。

答案 1 :(得分:0)

我最后通过测量颜色距离来结束。并且只有当距离大于触发时才接受。

为此,我迭代我的HsvColor,然后将其转换为Rgb - > XYZ - > Lab(CIE L * a * b)是感知线性色标。我的代码基于此http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html