我有一个包含 np.nan 值的数组,我想使用 pcolor 绘制它。原则上一切正常,但我收到了无法消除的警告。使用plt.imshow
不会发出警告,但我需要指定 x 和 y 坐标。
MatplotlibDeprecationWarning:从 PolyQuadMesh 获取数组将来会返回完整数组(未压缩)。要获得此行为,现在使用 2D 数组 .set_array(data2d) 设置 PolyQuadMesh。
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
x = np.linspace(-2,2,100)
y = np.linspace(-2,2,100)
X, Y = np.meshgrid(x,y)
X[X**2+Y**2>4] = np.nan
Y[X**2+Y**2>4] = np.nan
Z = np.exp(-(X**2+Y**2))
plt.pcolor(Y,X,Z, cmap='viridis')
plt.colorbar()
我使用 matplotlib v3.9.2 和 numpy v1.26.4。
此警告是由于内部
pcolor
逻辑结构发生变化(此处为 changenote)。当 colorbar 代码内部调用get_array
返回的对象时会触发此pcolor
警告。您可以通过将数组明确重新传递Z
给set_array
方法来消除警告:或者,您可以将 Matplotlib 升级到版本 3.10+,因为此弃用现已过期。