如何在Basemap中使用Python投影二维数组?
我正在尝试使用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 来显示填充的等高线图。