我有一个包含lat
,lon
,val
的pandas DataFrame。
lat lon val
50 60 1
51 60 2
52 60 3
50 61 7
51 61 8
52 61 9
要使用matlibplot.contourf,我必须发送网格数据而不是矢量。
为此,我使用numpy.meshgrid生成
lat = [50, 51, 52, 50, 51, 52]
lon = [60, 60, 60, 61, 61, 61]
x, y = np.meshgrid(lat, lon)
lat = 50 51 52 50 51 52
50 51 52 50 51 52
50 51 52 50 51 52
50 51 52 50 51 52
50 51 52 50 51 52
50 51 52 50 51 52
lon = 60 60 60 60 60 60
60 60 60 60 60 60
60 60 60 60 60 60
61 61 61 61 61 61
61 61 61 61 61 61
61 61 61 61 61 61
现在,我需要将val
创建为:
val = 1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
7 8 9 7 8 9
7 8 9 7 8 9
7 8 9 7 8 9
但是我不知道如何以“正确的方式”做到这一点。
当然,我可以创建一个空的3x3数组len(lat x lon),遍历其键,然后填充值。但这似乎是错误的方法。
此外,还有DataFrame.applymap,因此在进行迭代时不会让我的“手很脏”,但是它也感觉不对(而且很慢)。
如何创建val
数组?
答案 0 :(得分:1)
您将需要2 x 3的网格:
lat = [50, 51, 52, 50, 51, 52]
lon = [60, 60, 60, 61, 61, 61]
val = [1,2,3,7,8,9]
x = np.array(lat).reshape(2,3)
y = np.array(lon).reshape(2,3)
z = np.array(val).reshape(2,3)
plt.contourf(x,y,z)
重复中的更多信息:Make contour of scatter