2017-09-05 123 views
2

遇到一些问题与matplotlib和突出的阵列成Mollweide投影。我使用Python 3.6和matplotlib 2.0.2Matplotlib程度与mollweide投影

我有形状的np.array(360,180),我无法弄清楚如何得到它的合理分配。

例如

fig = plt.figure() 
ax = fig.add_subplot(111, projection='mollweide') 
arr = np.zeros((360, 180)) 
extent=(-np.pi, np.pi, -np.pi/2., np.pi/2.) 
im = ax.imshow(arr, cmap=plt.cm.jet, 
    extent=extent, aspect=0.5) 

产生一个空白图像。改变程度:

fig = plt.figure() 
ax = fig.add_subplot(111, projection='mollweide') 
arr = np.zeros((360, 180)) 
extent=(-180, 180, -180/2., 180/2.) 
im = ax.imshow(arr, cmap=plt.cm.jet, 
    extent=extent, aspect=0.5) 

产生这个图片Matplotlib image。任何帮助将非常感激。

回答

1

在非笛卡尔投影将主要失败显示与plt.imshow的图像。然而,有可能使用pcolormesh。 mollweide投影将需要在范围-π,π-π/2., π/2范围内的坐标。因此,您可以使用numpy.meshgrid创建相应的网格,并使用pcolormesh在其上绘制阵列。 (请注意,Y /纬度是该数组的第一个维度。)

import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='mollweide') 
arr = np.random.rand(180, 360) 

lon = np.linspace(-np.pi, np.pi,360) 
lat = np.linspace(-np.pi/2., np.pi/2.,180) 
Lon,Lat = np.meshgrid(lon,lat) 

im = ax.pcolormesh(Lon,Lat,arr, cmap=plt.cm.jet) 

plt.show() 

enter image description here

+0

感谢您的帮助,这真是棒极了! – Joe