在字典[Python]

时间:2018-05-06 11:33:12

标签: python colors

我有一个不同值的字典,如下所示:

  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))}

这里我有随机颜色分配,但我想根据值(从较小到较大)分配颜色比例(例如从暗到亮)。

有一种简单的方法吗? 感谢

1 个答案:

答案 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)}