我正在使用matplotlib 3.0.3
,并想使用FuncAnimation
模块创建图像绘图的动画。为了提高绘图速度,我使用im.set_data
的{{1}}和imshow
的{{1}}更新图像数据(im.set_array()
作为属性不可用)。如果我用NaN值部分更新数据,则plt.pcolormesh
将它们显示为空白像素,而set_data
将它们显示为颜色图中的最低颜色(imshow
为蓝色)。
这是故意的吗?如果不是,这是为什么呢?这似乎与pcolormesh
有关,因为viridis
通常会将NaN绘制为空白像素。
最小示例:
set_array()
答案 0 :(得分:1)
Matplotlib图像不适用于nan
。人们应该改为使用掩码数组。然后这两种情况是相同的(除了需要展平pcolormesh数组)。
import numpy as np
import matplotlib.pyplot as plt
A = np.random.rand(10,10)
B = np.ma.array(A, mask=np.ones((10,10)))
fig1 = plt.figure()
im1 = plt.pcolormesh(A)
im1.set_array(B.ravel())
plt.colorbar()
fig2 = plt.figure()
im2 = plt.imshow(A)
im2.set_array(B)
plt.colorbar()
plt.show()