Python:将浮点范围[0.0, 1.0]映射到颜色范围[红色, 绿色]?

5 投票
2 回答
6927 浏览
提问于 2025-04-16 21:19

我有一个函数,它的返回值是一个浮点数,范围在0.0到1.0之间。我想用颜色来展示这些结果,0.0用红色表示,1.0用绿色表示,0.5可以用黄色表示。请问我该怎么做呢?谢谢!

2 个回答

2

假设你有一种方法可以把RGB值表示成三个数字的组合(R, G, B),这些数字的范围是0到1。听起来你想把颜色从(1, 0, 0)变成(0, 1, 0)。

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

然后用任何图形库把这些三个数字的组合显示成实际的RGB颜色。

4

我觉得最简单的方法是使用 HSL/HSB(色相、饱和度、亮度),在这个系统中,色相的值从0%到33%会对应红色、橙色、黄色和绿色。使用HSL而不是RGB的好处是,得到的颜色看起来会更好(比如在RGB中,亮黄色会带一点蓝色)。

所以基本上,你会根据一个固定的饱和度(S)和亮度(L)值,创建一个对应的色相(H)值。

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

然后再把这个值转换回RGB格式来显示。我不太懂Python(真丢人),但听说 colorsys模块可以帮你完成这个转换。

撰写回答