我在Python中使用matplotlib在一个数组中,其浮点数介于0到1之间。
我正在用imshow显示此数组,我试图创建一个与Greens相同的自定义cmap,但是当一个单元格变为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')。
cmap_custom.set_under('r')
vmin=0.01
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()