【发布时间】:2012-04-05 13:16:00
【问题描述】:
我正在尝试使用 contourf 在 matplotlib 中生成填充等高线图。靠近图底部的锯齿状模式中缺少数据。等高线图不仅在原始数据被屏蔽的地方变成空白,而且在等高线算法由于没有足够的良好数据邻域而无法干净地插值的地方也是空白。
我知道如何扩展数据集以在这些口袋中生成合理的轮廓。但是,如果我绘制扩展数据,我会在各处得到轮廓填充。我想以黑色或白色掩盖原始数据丢失的区域。
在上一个帖子中,我学习了如何通过绘制第一张图像然后用另一张掩盖坏区域的图像覆盖它来为图像执行此操作。模拟将是下面的代码 sn-p 但它不适用于轮廓......我无法让 bad_data imshow 掩盖扩展的轮廓图。有可能吗?
谢谢, 以利
import matplotlib.pyplot as plt
lev = [0.0,0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
# this is the contour plot, using extended_data so that the contours are plausibly extended
cs = plt.contourf(x,z,extended_data,levels = lev, cmap = cm.RdBu_r,norm = norml)
# now the attempt to cover it up -- but imshow will not cover up the original plot as it will with another image
bad_data = np.ma.masked_where(~data.mask, data.mask, copy=True)
plt.imshow(bad_data, interpolation='nearest', aspect = 'auto', cmap=cm.gray)
plt.show()
【问题讨论】:
-
我应该补充一点,因为这篇文章我意识到我可以识别该区域并使用 fill() 来屏蔽该区域。因此,紧迫性较低,但知道是否可以做到这一点仍然很有价值。
-
假设您有一个 5x5 数组,并且缺少索引 [1, 1],您希望看到什么?索引 [1, 1] 会被绘制为标记吗?
-
你能发布一个最小的工作示例吗?
标签: python matplotlib contour