Matplotlib轮廓与空白区域

时间:2012-04-23 17:50:02

标签: python matplotlib contour

我有一组数据,包括x和y坐标以及每个坐标的计算值。网格是不规则的,所以现在我一直在创建一个散点图并将值分成二进制位,以显示为下面链接上img的轮廓。 http://i.stack.imgur.com/m7XHm.png

我想通过使用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()]) 

1 个答案:

答案 0 :(得分:0)

这是一个奇怪的问题,因为插值的目的是找到数据不足的区域的合理估计。我建议要么接受新图已经插值,所以如果'无数据'区域不再存在就可以了。或者,您可以在插值后将data voids放回原位,例如使用第一个绘图作为蒙版。