为什么我的等高线图的一部分显示为白色?

WVJ*_*Joe 3 python matplotlib contourf

我正在使用 Pythonmatplotlib.pyplot.contourf创建带有颜色条的数据的等高线图。我已经无数次成功地做到了这一点,即使使用相同变量的其他层也是如此。但是,当值变小时(大约为 1E-12)时,轮廓的部分显示为白色。白色也不会出现在颜色栏中。有谁知道这是什么原因以及如何解决这个问题?错误的轮廓附在下面。

轮廓不好

a1 = plt.contourf(np.linspace(1,24,24),np.linspace(1,20,20),np.transpose(data[:,:,15]))
plt.colorbar(a1)
plt.show()
Run Code Online (Sandbox Code Playgroud)

Ser*_*ioR 7

tl;博士

鉴于新信息,matplotlib 无法为您的数据设置正确的级别数(请参阅文档中的参数),而未绘制数据。要解决此问题,您需要告诉 matplotlib 使用plt.contourf(..., extend="max")或扩展限制plt.contourf(..., extend="both")

在此处输入图片说明

广泛的回答

contourf()使用不包含 white颜色图显示白色区域的原因有几个。

NaN 值

从不绘制 NaN 值。

在此处输入图片说明

屏蔽数据

如果在绘图前屏蔽数据,它不会出现在绘图中。但是你应该知道你是否屏蔽了你的数据。

在此处输入图片说明

虽然,如果您使用类似Tick locator = LogLocator() 之类的东西,您可能会忽略您的数据。

在此处输入图片说明

Matplotlib 无法为您的数据设置正确的级别

有时 matplotlib 没有设置正确的级别,从而使您的一些数据没有绘图。

在此处输入图片说明

要解决该问题,您可以使用plt.contourf(..., extend=EXTENDS)EXTENDS 的位置"neither", "both", "min", "max"

在此处输入图片说明

粗网格

contourf 在有限数据上绘制空白。过去的答案不正确