为字典中的数字设置颜色比例[Python]

2024-06-26 14:17:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本不同值的字典,像这样:

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

我使用了这个函数:

^{pr2}$

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

有简单的方法吗? 谢谢


Tags: 方法函数字典颜色rgb比例colormappr2
1条回答
网友
1楼 · 发布于 2024-06-26 14:17:51

RGB不适合创建平滑的颜色过渡,googlehsv颜色空间。 选择一个Hue,一个S饱和度,并使V值变量创建一个基色的不同色调。

可以从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)

输出:

^{pr2}$

相关问题 更多 >