如何使用matplotlib插值并创建更好的Contour贴图?

问题描述 投票:1回答:1

我试图在python中对数据进行网格化后使用不规则数据生成等高线图。当我试图得到一个像右侧的轮廓图而我的图中没有任何空白区域(未开槽的空间?)时,我得到的东西就像左边的图像一样

Contour 1 Contour 2

我最初使用下面的代码创建一个网格

def grid(x, y, z, resX=100, resY=100):
  xi = linspace(min(x), max(x), resX)
  yi = linspace(min(y), max(y), resY)
  Z = griddata(x, y, z, xi, yi, interp='linear')
  X, Y = meshgrid(xi, yi)
  return X, Y, Z
X, Y, Z = grid(x, y, z)
contour = plt.contourf(X,Y,Z)

其中x,y,z是我的csv文件中的列。

我尝试使用其他方法,如使用matplotlib.pyplot.tricontourf,但情节看起来类似于我得到的。

来自scipy.interpolate.rbf的Rbf给出了一个类似于右侧的图,如果我使用我的数据子集但它不适用于大型数据集。

python matplotlib scipy data-visualization
1个回答
1
投票

您需要推断以覆盖空白区域。 Griddata在数据的凸包内插值。为了推断数据,您可以使用SciPy的RBF(径向基函数)插值。 RBF有一些插值选项(线性,立方,高斯等)。另一种选择是使用sklearn的“高斯过程回归”来预测整个网格空间中的值。此选项需要SciPy内置RBF的更多工作,但它也更灵活。

© www.soinside.com 2019 - 2024. All rights reserved.