【发布时间】:2020-10-06 11:26:20
【问题描述】:
我试图在网格网格上插入稀疏数据,但观察到一些相当奇怪的行为。白点正是我有值的地方,我依靠线性插值算法在可能的情况下填充其他网格。我认识到由于明显缺乏数据,这种类型的插值并不完美,但是为什么我有数据的一些点落在我正在插值的网格网格之外?这是普遍现象吗?即使我使网格更粗糙,这也不会改变。
我希望能深入了解为什么会发生这种情况(也许线性插值是如何工作的),或者是否有任何方法可以解决这个问题。例如,请参见下图中的红色圆圈:
为插值提供的数据点落在被插值的网格网格之外
以下是生成网格数据的插值代码。
#mesh grid
xg = np.linspace(-130, -60, num=70)
yg = np.linspace(20,50,num=30)
Xg,Yg = np.meshgrid(xg,yg)
zg1 = griddata(points1, df2['tempratio'], (Xg, Yg), method = 'linear')
from mpl_toolkits.basemap import Basemap
lon_0 = xg.mean()
lat_0 = yg.mean()
m = Basemap(width=5000000, height=3500000,
resolution='l', projection='stere',\
lat_ts=40, lat_0=lat_0, lon_0=lon_0)
xm, ym = m(Xg, Yg)
cs = m.pcolormesh(xm,ym,zg1,shading='flat',cmap=plt.cm.Reds)
【问题讨论】:
-
感谢您的建议,我不确定我可以提供多远的数据以使其成为可重复的示例,但我当然可以提供插值过程的代码以及此地图的生成方式。很抱歉,我现在不能更具体。
标签: python matplotlib interpolation matplotlib-basemap linear-interpolation