如果我运行以下内容:
print(cm.jet(0))
print(cm.jet(0.25))
print(cm.jet(0.5))
print(cm.jet(0.75))
print(cm.jet(0.99))
print(cm.jet(1))
我明白了:
(0.0, 0.0, 0.5, 1.0)
(0.0, 0.503921568627451, 1.0, 1.0)
(0.4901960784313725, 1.0, 0.4775458570524984, 1.0)
(1.0, 0.5816993464052289, 0.0, 1.0)
(0.535650623885918, 0.0, 0.0, 1.0)
(0.0, 0.0, 0.517825311942959, 1.0)
所以我为0和1得到了相同的颜色。我做错了吗?我正在使用matplotlib的2.1.2版和python的3.5版。
更新
好的,它与int和float有关。
所以:
print(cm.jet(0))
print(cm.jet(0.25))
print(cm.jet(0.5))
print(cm.jet(0.75))
print(cm.jet(0.99))
print(cm.jet(1.0))
print(cm.jet(1))
给出:
(0.0, 0.0, 0.5, 1.0)
(0.0, 0.503921568627451, 1.0, 1.0)
(0.4901960784313725, 1.0, 0.4775458570524984, 1.0)
(1.0, 0.5816993464052289, 0.0, 1.0)
(0.535650623885918, 0.0, 0.0, 1.0)
(0.5, 0.0, 0.0, 1.0)
(0.0, 0.0, 0.517825311942959, 1.0)
答案 0 :(得分:2)
这确实令人困惑。有两种方法可以从colormap获取颜色。
0.
和1.
之间的('n数组)浮点值调用它。这里0.
是地图的第一种颜色,1.
是最后一种颜色。 0
和n-1
之间的('n数组)整数值,其中n
将是色彩映射中的颜色数。许多色彩映射都有256种颜色,但您可以检查N
属性,例如print(cm.jet.N)
打印256
。这意味着您可以通过
获得相同的颜色from matplotlib import cm
cm.jet(0.0) == cm.jet(0)
cm.jet(1.0) == cm.jet(255)
cm.jet([0.0, 0.5, 1.0]) == cm.jet([0, 128, 255])
在“连续”色彩映射的情况下,例如jet
或默认的viridis
,您通常会确保使用浮点数而不关心索引。
在“离散”色彩映射的情况下,像tab10
索引变得有趣。例如。 tab10
色彩图只包含10种颜色。要获得该colormap的第三种颜色,请调用
cm.tab10(2)
比分割颜色数要容易得到相应的浮点值。
建议阅读: