matplotlib:如何根据它的布尔值一致地更改数据点颜色。

时间:2016-12-06 00:45:49

标签: python matplotlib

我正在尝试使用matplotlib中的pcolormesh绘制一个布尔numpy数组。如果numpy数组中的单元格值为True,我想将其显示为绿色,否则我想将其显示为红色。

这是我正在使用的代码段:

import matplotlib.pylab as plt
import numpy
from matplotlib import colors
matrix = numpy.array([[True, True, True]])
cmap = colors.ListedColormap(['green', 'red'], 'indexed')
fig, ax = plt.subplots()
ax.pcolormesh(matrix, cmap=cmap, edgecolor='black', linestyle='-', lw=1)
plt.show()

enter image description here

如果我将矩阵更改为: matrix = numpy.array([[False,False,False]]) 所有的细胞仍然是绿色而不是红色。

enter image description here

有没有办法使用ListedColormap一致地为特定颜色分配布尔值?理想情况下,False值始终映射到红色,True值始终映射到绿色。

我使用的是Python 2.7.6,Matplitlib版本:1.4.3。提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了解决这个问题的方法。

基本上我在matplotlib中使用set_bad的{​​{1}}属性。

首先,我将numpy数组中的所有False事件都屏蔽为“bad”数据

colormaps

其次,我创建了一个仅指定了绿色的ListedColormap。

matrix = numpy.ma.masked_where(matrix == False, matrix)

然后我使用cmap = colors.ListedColormap(['green']) 的{​​{1}}属性将所有'坏'数据设置为红色。

set_bad

以下是完整的代码示例:

colormaps