我在 python 中有一个数组,使用 matplotlib,浮点范围在 0 到 1 之间。
我正在用 imshow 显示这个数组,我正在尝试创建一个自定义 cmap,它与 Greens 相同,但是当单元格变为 0 时,我希望能够将该值映射到红色,并保留其余的光谱不变。
如果任何更熟悉 matplotlib 的人能够帮助我,我将不胜感激!
例如,我将如何编辑此脚本以使矩阵中的零值显示为红色?
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
x = np.array([[0,1,2],[3,4,5],[6,7,8]])
fig = plt.figure()
cmap_custom = matplotlib.cm.Greens
plt.imshow( x, interpolation='nearest' ,cmap = cmap_custom)
plt.colorbar()
plt.show()
最佳答案
matplotlib 中的颜色图允许您为定义范围之外的值设置特殊颜色。在您的情况下,使用 cmap_custom.set_under('r')
指定低于定义范围的值的颜色。
然后,您还需要指定范围的下限:vmin=0.01
(只是某个值 > 0)。
最后使用 plt.colorbar(extend='min')
创建颜色条。
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
x = np.array([[0,1,2],[3,4,5],[6,7,8]])
fig = plt.figure()
cmap_custom = matplotlib.cm.Greens
cmap_custom.set_under('r')
plt.imshow( x, interpolation='nearest' ,cmap = cmap_custom, vmin=0.01)
plt.colorbar(extend='min')
plt.show()
关于python - 自定义颜色图Matplotlib,使一个值成为规定的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174118/