从matplolib basemap映射投影数组

2024-04-20 05:39:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个矩形阵列(360 x 180),我想投影到一个正交投影。我可以用底图来做:

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

x,y = np.meshgrid(np.arange(180) - 90., np.arange(360) - 180.)
z = np.random.rand(360, 180)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
m = Basemap(projection='ortho', lon_0=0, lat_0=0.,
    resolution='l', ax=ax)
cs = m.contourf(x, y, z, 100, cmap=plt.cm.jet, latlon=True)

但我真正想要的是一个二维阵列(nxn),它是投影图像,这样我就可以用它做更多的计算。任何帮助都将不胜感激!你知道吗

编辑:我已经找到了一个解决方案,但速度很慢。一旦我画出了数组我就可以

im = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
im = im.reshape(fig.canvas.get_width_height()[::-1] + (3,)).astype(np.float32)

将绘图窗口读回数组im。如果有人有这样做的方式,而不必实际做任何阴谋,那将是伟大的!你知道吗


Tags: importnumpyasnpfigplt数组ax