2012-04-23 140 views
2

我有一组数据,其中包含x和y坐标以及每个坐标的计算值。网格是不规则的,所以现在我已经创建了一个散点图,并将这些值分隔为一个轮廓,以显示在下面链接上的img上。 http://i.stack.imgur.com/m7XHm.png带有空白区域的Matplotlib轮廓

我想通过使用meshgrid使用matplotlib中的imshow/contour功能来优化此方法,然后插值计算出的值。我可以很好地工作,但最终会出现一个问题,它会丢失图像中没有数据(真实生活中的空白)的区域,并将它们连接起来,如下面链接上的图像所示,以获取相同的数据。 http://i.stack.imgur.com/ZCRog.png

我试图找到最好的方法来做到这一点,但我还没有找到任何帮助。有没有人有建议?

我想我需要修改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()]) 
+0

你想**面具**一些地区,对吧? 检查此[示例](http://matplotlib.sourceforge.net/examples/pylab_examples/contourf_demo.html)... – carla 2012-04-23 18:03:19

+0

问题是,掩码区域的位置根据输入而改变。理想情况下,如果可能的话,我希望网格上的轮廓不包含数据空白。 – LCSA 2012-04-23 22:12:33

回答

0

它是一个奇怪的问题,因为插值的目的是为数据不足的区域找到合理的估计值。我会建议要么接受新的情节有内插值,所以它确定如果'没有数据'区域不再存在。或者,您可以在执行插值之后将data voids重新插入,例如将第一个图作为掩码。

+0

我试图实现的是更好的可视化数据,我认为这是通过等值线图实现的。这些数据代表了建筑物的楼板,因此有些地区没有铺设地板 - 插入这些地方会产生误导。从我所知道的掩蔽这将是困难的空洞地区是不同的在每种情况下,所以我希望不要依靠掩护后插值。相反,我想知道是否有可能将空隙添加到原始网格中? – LCSA 2012-04-23 22:16:25

+0

@LCSA - 看起来你可以避免插入这些区域,将它们从你的xi,yi'数据点中排除(即排除它们,进行插值,将原始点返回)。此外,我认为上面评论中发布的链接可能允许您在插值之前隐藏,这可能是一种不同的方式(尽管我发现scipy过去不尊重裸体面具,所以我不确定)。 – fraxel 2012-04-24 07:46:31