2017-09-05 71 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