【发布时间】:2010-07-16 12:50:14
【问题描述】:
有没有一种很好的算法来生成用于图表(如折线图/饼图/条形图)的颜色?几乎所有图表都有一个内置的颜色列表,它们会自动分配给添加到其中的元素。但有时您需要自己手动分配颜色,在这种情况下,您需要避免自己手动插入颜色,这既费时又可能会产生不好的结果,而算法可能会做得更好。
生成的颜色应具有以下属性:
易于相互区分:随着越来越多的元素被添加,混淆和错误解释的可能性增加。因此,重要的是颜色尽可能容易地相互区分,尤其是颜色列表中彼此接近的颜色。冲突是可以接受的,但显然最好避免。
首先包含经典颜色:当图表中的元素很少时,最好先出现红色、蓝色、深橙色、绿色、灰色,然后再出现不易辨别的颜色之后。
目前我只是使用我在某处找到的颜色列表,如果我的元素多于颜色列表,则会重复使用该列表,有时会导致颜色冲突。
$default_colors = array(
"#4684ee", "#dc3912", "#ff9900", "#008000", "#666666",
"#4942cc", "#cb4ac5", "#d6ae00", "#336699", "#dd4477",
"#aaaa11", "#66aa00", "#888888", "#994499", "#dd5511",
"#22aa99", "#999999", "#705770", "#109618", "#a32929",
);
有这样的功能吗?我看过,但我的 google-fu 不够强大。
【问题讨论】:
-
我自己的观点是颜色列表是要走的路。这样您就可以完全控制选择哪些颜色。如果您的颜色列表有 24 个成员,那应该比您需要的要多得多 - 依赖于 25 种颜色可区分性的图形存在严重问题。