【发布时间】:2018-09-26 12:46:54
【问题描述】:
我正在尝试基于 (x,y) 坐标表面生成等高线图,其中包含任何数据 z 的立方体。以下是它的散点图。
我使用以下代码生成网格并插入数据以绘制这样的等高线图。我尝试屏蔽插值数据 Zi 但它仍然给了我一个未屏蔽的等高线图。我还尝试掩盖 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()
这是我运行上述代码后得到的情节。
我只是不想在没有数据点的立方区域内进行任何轮廓插值。
【问题讨论】:
-
请阅读How to create a Minimal, Complete, and Verifiable example 并相应地编辑您的问题。我们怎么知道
centre_unadj是什么? -
感谢您的建议。我只是在寻找一些我错过的技术或其他人可以指出的愚蠢错误。所以我觉得不需要一个可重现的例子。
-
第一个图显示
x=centre_unadj['X [mm]']vsy=centre_unadj['Y [mm]']对吧? -
是的,没错。它表示缺少正方形的网格。
-
我认为我提出的建议可以解决您的问题。然而,在未来,提供一个最小、完整和可验证的示例将是一个非常好的做法,以确保任何想要回答的人都能够重现(并因此解决)相同问题你有,而不是回答者定义的版本试图猜测你的数据
标签: python matplotlib