在已知X和Y坐标(每个1列)使用Z值(1列)的平滑2D插值图

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

请原谅我的无知,但无论如何,所有内插,2D地图解决方案的平滑处理都需要关系Z~f(x,y),并且不适合我的问题。这最接近我的问题:smoothing surface plot from matrix

我有三列相同的长度:X坐标,Y坐标和Z值

我可以像这样绘制散点图

scatterplot

以Z作为填充物/颜色图,但是它看起来像是规则间隔的网格上的点。

我想对它们进行插值和平滑以填充网格点之间的间隙,但是我不知道Z~f(x,y)是什么。有没有办法做到这一点?

python 2d interpolation smoothing
1个回答
0
投票

我假设您具有以下数据:

  • [x:x值[-120, -100, ..., 140, 160]
  • y:y值[-180, -160, ..., 80, 100]
  • [z:一个二维数组,其中包含网格中每个点的z值

现在您可以将数据绘制为可以为您进行插值的图像:

from matplotlib.pyplot import imshow

extent = [x.min(), x.max(), y.min(), y.max()]
imshow(z, interpolation="none", extent=extent, origin="lower")

scatter plot as image

extent定义图像的轴。您可以使用interpolation参数进行操作。

黑圈是散点图中的标记(代码中未显示。)>

如果需要散点图标记位于每个像素的中心,则必须像这样更改interpolation

extent

ox = (x.max() - x.min()) / (x.size * 2) oy = (y.max() - y.min()) / (y.size * 2) extent = [x.min() - ox, x.max() + ox, y.min() - oy, y.max() + oy] 插值一起看起来如下:

bilinear

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