是否有一个很好的算法来生成颜色,用于图表,如线/饼/条形图?实际上,所有图形都有一个内置的颜色列表,它们会自动分配给添加到其中的元素。但有时您需要自己手动分配颜色,在这种情况下,您需要避免自己手动插入颜色,这会耗费时间并且可能会产生不良结果,而算法可能会做得更好。
生成的颜色应具有以下属性:
容易相互区分:随着越来越多的元素被添加,混淆和错失解释的概率上升。因此,重要的是颜色应尽可能容易地彼此辨别,尤其是颜色列表中彼此接近的颜色。冲突是可以接受的,但显然最好避免。
首先包含经典颜色:当图表中存在少量元素时,红色,蓝色,深蓝色,绿色,灰色应该首先出现,而不太容易识别出来的颜色后。
目前我只是使用我在某个地方找到的颜色列表,如果我有比颜色列表更多的元素,则重复使用该列表,有时会导致颜色冲突。
$default_colors = array(
"#4684ee", "#dc3912", "#ff9900", "#008000", "#666666",
"#4942cc", "#cb4ac5", "#d6ae00", "#336699", "#dd4477",
"#aaaa11", "#66aa00", "#888888", "#994499", "#dd5511",
"#22aa99", "#999999", "#705770", "#109618", "#a32929",
);
那里有这样的功能吗?我看了,但我的谷歌不够强大。
答案 0 :(得分:2)
使用HSV色彩空间可能就是这样。在我的脑海中,这是一个可以根据您的喜好修改的算法。
这为您提供了h * v不同的颜色,采用相当均匀的分布对全饱和色彩空间进行采样,尽可能远离暗色,并首先提出原色。
如果您需要更多颜色,也可以加入饱和度。