如何在Basemap中使用Python投影二维数组?

0 投票
1 回答
1040 浏览
提问于 2025-05-01 17:14

我正在尝试使用Python的basemap库在地图上显示数据。我手头的数据是一个二维数组(72行144列)。我已经能够显示地图,但当我在地图上展示数据时,效果看起来是这样的:

https://i.stack.imgur.com/Zsw9Y.png

我想知道怎么才能让数据填满整个地图?我不知道怎么改变地图的大小。

我的代码如下:

import numpy as np
from matplotlib import pylab as plt
from pylab import *
from matplotlib import colors
from mpl_toolkits.basemap import Basemap

A = np.fromfile('1983/yyyymmddhh.83100100', dtype='int32')
B = np.reshape(A, (72, 144))

for i, n in enumerate(B):
    for j, m in enumerate(n):
        if (B[i][j] == -999):
            B[i][j] = 13

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

m = Basemap(projection='cyl', lat_0 = 50, lon_0 = -100,
            ax = ax, resolution = 'l',
            llcrnrlat=-90, urcrnrlat = 90, llcrnrlon = -180, urcrnrlon = 180)

border_color = 'black'
m.drawcoastlines()

plt.imshow(B)
plt.colorbar()
plt.show()
暂无标签

1 个回答

0

有几种方法可以做到这一点,具体可以参考这里:http://matplotlib.org/basemap/api/basemap_api.html

第一种方法,在上面的评论中提到的,是使用 m.imshow。

接下来,你可以用 m.pcolor 或 m.pcolormesh 来绘制伪彩色图像,只需要为每个点指定经纬度坐标;这样会给每个方块上色。

最后,你可以使用 contour 来显示等高线图,或者用 m.contour 或 m.contourf 来显示填充的等高线图。

撰写回答