【问题标题】:Assign color to value [closed]为值分配颜色[关闭]
【发布时间】:2014-11-29 19:42:52
【问题描述】:

我想使用 matplotlib 或颜色图为值分配颜色。 更具体地说:如果我有一个小值(假设 -14 是最小值)和一个高值(假设 86 是最大值),我想将低值的对象打印得更红,并且具有较高值的​​对象更绿(-14 --> 完全红色;86 --> 完全绿色)。对于值介于 -14 和 86 之间的对象,我想为它们分配红色和绿色之间的颜色。

我知道有一个名为“RdYlGr”的颜色图,它是由红-黄-绿组成的。也许可以使用这张地图?但是怎么做?

总结:如何使用 maplotlib 的颜色图将浮点数(例如,从 -14 到 86 的 6.2)映射到相应的十六进制颜色字符串(例如,“#A0CBE2”)。

【问题讨论】:

  • “打印对象”是什么意思。您想将 RGB 值显示为一个元组,还是想使用该特定阴影为绘图中的某些内容着色等?
  • 我必须使用 networkx 模块的颜色名称,例如: nx.draw_networkx_nodes(G, pos, node_size=3000, node_color="#A0CBE2") 或者有没有更简单的解决方案对于模块“networkx”?
  • @MarkFa:这个问题由于不够清晰而被关闭。为了帮助解决这个问题,我在最后添加了一个摘要,我认为这是对您的具体问题的明确陈述。如果需要,请花一点时间进行编辑,我会尝试重新提出问题(因为我认为这应该可以解决问题,而且这是一个值得讨论的话题)。

标签: python matplotlib colors


【解决方案1】:

您可以直接使用颜色图完成大部分操作,但 matplotlib 提供 rgb 而不是 hex 值,因此您需要自己执行 hex。这是一个例子:

import matplotlib.cm as cm
import matplotlib.colors as colors

norm = colors.Normalize(vmin=-14, vmax=86)
f2rgb = cm.ScalarMappable(norm=norm, cmap=cm.get_cmap('RdYlGn'))

def f2hex(f2rgb, f):
    rgb = f2rgb.to_rgba(f)[:3]
    return '#%02x%02x%02x' % tuple([255*fc for fc in rgb])

print f2hex(f2rgb, -13.5)  #   gives #a60126  ie, dark red
print f2hex(f2rgb, 85.5)   #   gives #016937  ie, dark green with some blue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2020-08-29
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多