Python 带空白区域的Matplotlib轮廓

Python 带空白区域的Matplotlib轮廓,python,matplotlib,contour,Python,Matplotlib,Contour,我有一组数据,包括x和y坐标以及每个坐标的计算值。网格是不规则的,所以现在我已经创建了一个散点图,并将值分为若干个单元,以显示为轮廓,如下面链接的img上所示。 我想通过使用matplotlib中的imshow/contour功能,通过使用meshgrid,然后对计算值进行插值,来改进此方法。我可以让它正常工作,但我最终遇到了一个问题,即它会丢失图像中没有数据空洞的区域,并将它们连接起来,如下图链接中所示,以获得相同的数据。 我试图找到最好的方法来做这件事,但我没有找到任何帮助。有人有什么建

我有一组数据,包括x和y坐标以及每个坐标的计算值。网格是不规则的,所以现在我已经创建了一个散点图,并将值分为若干个单元,以显示为轮廓,如下面链接的img上所示。

我想通过使用matplotlib中的imshow/contour功能,通过使用meshgrid,然后对计算值进行插值,来改进此方法。我可以让它正常工作,但我最终遇到了一个问题,即它会丢失图像中没有数据空洞的区域,并将它们连接起来,如下图链接中所示,以获得相同的数据。

我试图找到最好的方法来做这件事,但我没有找到任何帮助。有人有什么建议吗

我认为我需要在meshgrid阶段修改该方法,但对此我不确定。下面是我的代码

    x=nodalData[:,1] #array of x values from input file
    y=nodalData[:,2] #array of y values from input file

    #define the linear grid
    xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 100) 
    xi, yi = np.meshgrid(xi, yi)

    z=Rres #array calculated elsewhere corresponding to x,y pair

    #interpolate
    zi = scipy.interpolate.griddata((x, y), z, (xi, yi), method='cubic')
    #plot    
    plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower', extent=[x.min(), x.max(), y.min(), y.max()]) 

这是一个奇怪的问题,因为插值的目的是为数据不足的地区找到合理的估计。我建议要么接受新绘图具有插值,因此如果“无数据”区域不再存在,就可以了。或者,在进行插值后,您可以将数据空洞放回,例如使用第一个绘图作为遮罩。

这是一个奇怪的问题,因为插值的目的是为数据不足的区域找到合理的估计值。我建议要么接受新绘图具有插值,因此如果“无数据”区域不再存在,就可以了。或者,您可以在执行插值后将数据空洞放回,例如使用第一个绘图作为遮罩。

您想遮罩一些区域,对吗?检查此项…问题在于遮罩区域的位置根据输入而变化。理想情况下,如果可能的话,我希望网格中的点轮廓不包括数据空洞。你想掩盖一些区域,对吗?检查此项…问题在于遮罩区域的位置根据输入而变化。理想情况下,如果可能的话,我希望网格中的点轮廓不包括数据空洞。我试图实现的是更好的数据可视化,我认为这是通过轮廓图实现的。这些数据代表建筑物的楼板,因此有些区域没有楼板——插入这些区域会产生误导。根据我对掩蔽的了解,这对于不同情况下的空洞区域来说是困难的,所以我希望在插值后不要依赖掩蔽。相反,我想知道是否有可能在原始网格中添加空洞?@ LCSA——看起来你可以避免将这些数据插入到那些区域,通过将它们从席曦、彝族数据点中排除。另外,我认为你上面评论中的链接可能允许你在插值之前屏蔽,这可能是一种不同的方式,尽管我发现scipy过去不尊重numpy屏蔽,所以我不确定。我试图实现的是更好的数据可视化,我认为这是通过等高线图实现的。这些数据代表建筑物的楼板,因此有些区域没有楼板——插入这些区域会产生误导。根据我对掩蔽的了解,这对于不同情况下的空洞区域来说是困难的,所以我希望在插值后不要依赖掩蔽。相反,我想知道是否有可能在原始网格中添加空洞?@ LCSA——看起来你可以避免将这些数据插入到那些区域,通过将它们从席曦、彝族数据点中排除。此外,我认为你在上面评论中发布的链接可能允许你在插值之前屏蔽,这可能是一种不同的方式,尽管我发现scipy过去不尊重numpy屏蔽,所以我不确定。