我有一个不同值的字典,如下所示:
colormap_coms=
{0.10208554259455638: rgb(179, 56, 79), 0.0: rgb(121, 28, 149),
0.10870219813309245: rgb(44, 147, 200), 0.12623481073520415: rgb(78, 170,
98), 0.10298102981029811: rgb(150, 87, 91), 0.044263775971093045: rgb(223,
39, 33), 0.13340724316334074: rgb(194, 205, 92), 0.10034049058439304:
rgb(99, 41, 106), 0.08040984519434236: rgb(97, 51, 26),
0.008130081300813009: rgb(106, 148, 70), 0.07158437438032918: rgb(54, 159,
37)}
我使用了这个功能:
colormap_coms = {x :
RGB(random.randrange(0,256),random.randrange(0,256),random.randrange(0,256))
for x in list(set(communities))}
这里我有随机颜色分配,但我想根据值(从较小到较大)分配颜色比例(例如从暗到亮)。
有一种简单的方法吗? 感谢
答案 0 :(得分:0)
RGB不适合创建平滑的色彩过渡,谷歌HSV色彩空间。 您选择 H ue, S ,并使 V alue变量创建一种基色的不同阴影。
您可以从HSV值获取RGB值,如下所示:
import colorsys rgbs = [] for v in range(10000): val = v/10000.0 # http://colorizer.org/ some light blue base color rgbs.append( colorsys.hsv_to_rgb(170/256.0,0.7,val)) print (rgbs)
(根据CoryKramer的回答here修改)
您可以将此RGB列表映射到您的值,或者只是将您的值放入HSV的 V 对象中 - 您可能需要对原始值进行一些缩放/标准化以将它们分散到可用的色彩空间。
你也可以修复任何其他2:H或V,在这种情况下色调或值正在改变。
创建与rbg类似的映射,您应该设置:
coms= sorted([0.10208554259455638, 0.0, 0.10870219813309245,0.12623481073520415, 0.10298102981029811,0.44263775971093045,0.13340724316334074,0.10034049058439304,0.08040984519434236,0.008130081300813009,0.07158437438032918])
mycols = {}
part = 1.0 / len(coms)
for k in range(len(coms)):
mycols[colormap_coms[k]] = colorsys.hsv_to_rgb(170/256.0,0.7,k*part)
print(mycols)
输出:
{0.0: (0.0, 0.0, 0.0),
0.008130081300813009: (0.02727272727272728, 0.028267045454545465, 0.09090909090909091),
0.07158437438032918: (0.05454545454545456, 0.05653409090909093, 0.18181818181818182),
0.08040984519434236: (0.08181818181818182, 0.08480113636363638, 0.2727272727272727),
0.10034049058439304: (0.10909090909090911, 0.11306818181818186, 0.36363636363636365),
0.10208554259455638: (0.1363636363636364, 0.14133522727272732, 0.4545454545454546),
0.10298102981029811: (0.16363636363636364, 0.16960227272727277, 0.5454545454545454),
0.10870219813309245: (0.19090909090909094, 0.19786931818181824, 0.6363636363636364),
0.12623481073520415: (0.21818181818181823, 0.22613636363636372, 0.7272727272727273),
0.13340724316334074: (0.2454545454545455, 0.2544034090909092, 0.8181818181818182),
0.44263775971093045: (0.2727272727272728, 0.28267045454545464, 0.9090909090909092)}