【问题标题】:Python: Map float range [0.0, 1.0] to color range [red, green]?Python:将浮点范围[0.0,1.0]映射到颜色范围[红色,绿色]?
【发布时间】:2011-07-12 07:34:53
【问题描述】:

我有一个函数返回区间 [0.0, 1.0] 中的浮点结果。我想使用颜色范围从 0.0 的红色到 1.0 的绿色(可能通过黄色 0.5)来可视化结果。我怎么能那样做?谢谢!

【问题讨论】:

    标签: python colors range


    【解决方案1】:

    我认为最简单的方法是在HSL/HSB(色调饱和度亮度)中工作,其中最大值的 0-33% 的色调值将映射到红-橙-黄-绿范围。工作的优点是 HSL(与 RGB 相比)是生成的颜色范围会更好看(例如 RGB 中的亮黄色包含少量蓝色)。

    所以基本上你将创建一个基于恒定 S 和 L 值的值,以及对应于的 H

    your_value * (1/3 of the maximum H value, often 255)
    

    然后将该值转换回 RGB 以进行显示。不知道 Python(我感到羞耻),但显然 colorsys module 可以为您完成此转换。

    【讨论】:

    • 这正是我想要的。非常感谢!
    【解决方案2】:

    假设您有一种方法可以将 RGB 值表示为 0..1 范围内的 3 元组 (R,G,B),听起来您想要从:(1, 0, 0) 到: (0, 1, 0)。

    您可以使用:rgbs = [(1-i,i,0) for i in your_floats]

    然后使用任何图形库将这些 3 元组可视化为实际的 RGB 颜色。

    【讨论】:

    • 我刚刚检查了 Paint 上的色轮,当您远离 i=1 或 i=0 时,这会给出超级模糊的值。要获得漂亮明亮的颜色,您希望保持在圆的外侧,因此 RGB=(1,0,0) 然后 (1,1,0) 然后 (0,1,0)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2012-08-04
    • 2015-08-02
    • 2017-11-03
    • 1970-01-01
    • 2017-04-18
    • 2018-11-02
    相关资源
    最近更新 更多