我正在尝试生成一个基于(x,y)坐标曲面的等高线图,其中包含任何数据z。下面是它的散点图。你知道吗
我使用下面的代码生成一个网格和插值数据来绘制这样的等高线图。我试图遮罩插值数据,但它仍然给我一个未遮罩的等高线图。我也试着遮罩x和y坐标,但那没用。你知道吗
x = centre_unadj['X [mm]']
y = centre_unadj['Y [mm]']
z = centre_unadj['LDA1-RMS [m/s]']
plt.figure(num=None, figsize=(20, 15), dpi=80, facecolor='w', edgecolor='k')
xi,yi = np.meshgrid(x,y)
mask =(yi> 0) & (yi< 25) & (xi > -53) & (xi < -25)
#mask_xi = (xi > -53) & (xi < -25)
#mask_yi = (yi> 0) & (yi< 25)
#yi = ma.masked_array(yi,mask =(yi> 0) & (yi< 25) )
#xi = ma.masked_array(xi,mask=((xi > -53) & (xi < -25) ))
zi = scipy.interpolate.griddata((x,y), z, (xi, yi) , method='cubic')
zi = ma.masked_array(zi, mask = ((yi> 0) & (yi< 25) & (xi > -53) & (xi < -25)) )
#zi[mask]=np.nan
plt.contourf( xi,yi,zi,100)
plt.colorbar()
plt.show()
这是我运行上述代码后得到的图。你知道吗
我只是不想在没有数据点的立方体区域内进行任何轮廓插值。你知道吗
问题在于网格生成。
y
中的值是0到40的十几倍。因此,生成的xi
和yi
实际上是非直观矩阵。你知道吗生成网格的正确方法如下:
示例
我生成了一些形状相似的数据:
这样x和y的曲线图看起来像:
实际使用的代码生成以下绘图:
获得网格数据的插值会产生意外和不正确的结果,从而导致获得的
contourf
。事实上,绘制plt.imshow(mask)
揭示了矩阵中的位置,即方格(y > 0) & (y < 25) & (x > -53) & (x < -25)
中的值在矩阵中的位置。你知道吗当meshgrid被定义为“建议”时,结果是:
相关问题 更多 >
编程相关推荐