一尘不染

自定义颜色映射Matplotlib,使一个值成为指定的颜色

python

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

阅读 386

收藏
2021-01-20

共1个答案

一尘不染

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()
2021-01-20