我有一个numpy数组,需要绘制成一个热图。numpy数组还将包含我需要从绘图中排除的NaN值。我在其他帖子中被告知,numpy自动屏蔽了情节中的NaN值,但不知何故对我不起作用。这是一个示例代码
column_labels = list('ABCDEFGH')
row_labels = list('WXYZ')
fig, ax = plt.subplots()
data = np.array([[ 0.96753494, 0.52349944, 0.0254628 , 0.5104103 ],
[ 0.07320069, 0.91278731, 0.97094436, 0.70533351],
[ 0.30162006, 0.49068337, 0.41837729, 0.71139215],
[ 0.19786101, 0.15882713, 0.59028841, 0.06242765],
[ 0.51505872, 0.07798389, 0.58790067, 0.44782683],
[ 0.68975694, 0.53535385, 0.15696023, 0.35641951],
[ 0.66481995, 0.03576846, 0.9623601 , 0.96006395],
[ 0.45865404, 0.50433582, 0.18182575, 0.35126449],])
data[3,:] = np.nan
heatmap = ax.pcolor(data, cmap=plt.cm.seismic)
fig.colorbar(heatmap)
# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1])+0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0])+0.5, minor=False)
# want a more natural, table-like display
ax.invert_yaxis()
ax.xaxis.tick_top()
ax.set_xticklabels(row_labels, minor=False)
ax.set_yticklabels(column_labels, minor=False)
plt.show()
我想完全避免图例中的NaN值,最好用一些符号标记它,如X。我怎样才能做到这一点呢?
nans
干扰了pcolor
确定data
中包含的值的范围,因为您可以通过使用
np.nanmin
和np.nanmax
声明值的范围来解决此问题,以在data
中找到最小和最大的非NaN值:自从
另一个选项(基于Joe Kington's solution)是绘制 在
data
为NaN的地方有填充标记的矩形块。上面的示例显示,在NaN值为的单元格中,
pcolor
的颜色为 尽管南斯是非常负的数字。相反,如果通过pcolor
a 蒙版数组使蒙版区域保持透明。因此,你可以画 在轴背景补丁ax.patch
上的阴影,以显示阴影标记 在蒙面区域。如果希望使用多种类型的填充标记,例如一种用于NaNs,另一种用于负值,则可以使用循环添加填充矩形:
相关问题 更多 >
编程相关推荐