gpt4 book ai didi

python - 如何使用 matplotlib 插值并创建更好的等高线图?

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:52 26 4
gpt4 key购买 nike

我正在尝试在 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 会给出与右侧类似的图,但它不适用于大型数据集。

最佳答案

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

关于python - 如何使用 matplotlib 插值并创建更好的等高线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com