Algorithm 有任何颜色生成算法吗?
有没有一个好的算法来生成用于直线/饼图/条形图等图形的颜色?实际上,所有图形都有一个内置的颜色列表,它们会自动分配给添加到其中的元素。但有时您需要自己手动指定颜色,在这种情况下,您将希望避免自己手动插入颜色,这非常耗时,并且可能会产生不好的结果,而算法可能会做得更好 生成的颜色应具有以下属性:Algorithm 有任何颜色生成算法吗?,algorithm,colors,graph,Algorithm,Colors,Graph,有没有一个好的算法来生成用于直线/饼图/条形图等图形的颜色?实际上,所有图形都有一个内置的颜色列表,它们会自动分配给添加到其中的元素。但有时您需要自己手动指定颜色,在这种情况下,您将希望避免自己手动插入颜色,这非常耗时,并且可能会产生不好的结果,而算法可能会做得更好 生成的颜色应具有以下属性: 很容易相互区分:随着越来越多的元素被添加,出现混淆和解释失误的可能性增加。因此,重要的是颜色尽可能容易相互区分,尤其是颜色列表中彼此接近的颜色。冲突是可以接受的,但显然最好避免 首先包含经典颜色:当图形
- 很容易相互区分:随着越来越多的元素被添加,出现混淆和解释失误的可能性增加。因此,重要的是颜色尽可能容易相互区分,尤其是颜色列表中彼此接近的颜色。冲突是可以接受的,但显然最好避免
- 首先包含经典颜色:当图形中出现的元素很少时,最好先显示红色、蓝色、暗红色、绿色和灰色,然后显示不易识别的颜色
$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不够强大。使用HSV颜色空间可能是一条可行的道路。在我脑海中,这里有一个可能的算法,你可以修改以适应你的口味
- 让N为您需要的颜色数
- 设v=ceil(N/6)为将使用的不同值的数量
- 设h=min(N,6)为将使用的不同色调的数量
- 使用值
1,1-1/v,…,1-(v-1)/v
每种颜色都有颜色
0,1/h,…(h-1)/h
如果你需要更多的颜色,你也可以加入饱和度。我个人的观点是,一份颜色列表是最好的选择。这样,您就可以完全控制选择的颜色。如果你的颜色列表有,比如说,24个成员,那应该比你需要的多得多——一个依赖于25种颜色可微性的图形有严重的问题。