我在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()
答案 0 :(得分:2)
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()