自定义颜色贴图Matplotlib,使一个值成为规定的颜色

时间:2014-11-27 15:29:04

标签: python matplotlib

我在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()

1 个答案:

答案 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()