如何使用python在Basemap上投影二维数组?

时间:2014-11-05 03:05:04

标签: python matplotlib-basemap

我正在尝试使用python的底图库在地图上显示数据。我拥有的数据是2D阵列(72 X 144)。我已经能够显示地图但是当我在地图上显示数据时,它看起来像这样:

http://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 :(得分:0)

有几种方法可以做到这一点,你可以在这里看到; http://matplotlib.org/basemap/api/basemap_api.html

上面评论中列出的第一个是使用m.imshow。

接下来,您可以通过指定每个点的纬度/经度坐标来绘制具有m.pcolor或m.pcolormesh的伪彩色图像;这将是方块颜色。

最后,您可以使用m.contour或m.countourf使用轮廓或填充的countour地图显示等高线图。