0

我正在尝试在一定大小的网格内重新网格化/插值,我的不规则分散位置(纬度)绑定变量值的数据集。我的数据可作为数据框使用,其中的列分别标记变量、纬度和经度的值。

我必须首先通过优化网格大小来对这些数据进行网格化,然后找到最佳方法来平均网格框中不同数量的点。

我按照在线示例尝试了代码。我使用 histogram2d 函数来网格化纬度和经度。我用密度计数(等于网格内所有点的平均值)填充具有散点的网格框。(然后我将不得不使用这个由散点生成的新网格数据来与另一个具有不同网格分辨率的数据集进行比较)。

理想情况下,它应该可以正常工作,但是没有散点的网格框会被填充,而有散点的网格框会被排除在外。在更精细的分辨率或更小的 bin 大小中,失配更大。

我查看了这些示例 -示例 1示例 2

这是我的代码的一部分:

df #Dataframe as a csv file opened in pandas

y = df['lon']
x = df['lat']
z = df['var']

# Bin the data onto a 10x10  grid or into any other size 
# Have to reverse x & y due to row-first indexing
zi, yi, xi = np.histogram2d(y, x, bins=(5,5), weights=z, normed=False)
counts, _, _ = np.histogram2d(y, x, bins=(5,5))

zi = zi / counts
zi = np.ma.masked_invalid(zi)


m = Basemap(llcrnrlat=45,urcrnrlat=55,llcrnrlon=25,urcrnrlon=30) 

m.drawcoastlines(linewidth =0.75, color ="black")
m.drawcountries(linewidth =0.75, color ="black")

m.drawmapboundary()

p,q = m(yi,xi)
#cs=m.pcolormesh(xi, yi, zi, edgecolors='black',cmap = 'jet')
cs=m.pcolormesh(p, q, zi, edgecolors='black',cmap = 'jet')
m.colorbar(cs)

#scat = m.scatter(x,y, c=z, s=200,edgecolors='red')


scat=m.scatter(y,x, latlon=True,c=z, s =80)

以下是生成的图像。

任何帮助都感激不尽。

在此处输入图像描述

4

1 回答 1

0

一个朋友帮我解决了这个问题。

在进行 pcolormesh 绘图时必须转置从直方图生成的数组矩阵:

cs=m.pcolormesh(p, q, zi.T, edgecolors='black',cmap = 'jet')
于 2020-06-06T22:32:12.637 回答