簡體   English   中英

python basemap和pcolormesh的奇怪行為

[英]Odd behavior with python basemap and pcolormesh

我試圖通過制作一個numpy.meshgrid來繪制bined數據的縱向條帶,使用Basemap()將坐標轉換為地圖的x,y坐標,然后制作一個應用於地圖的pcolormesh。 代碼適用於Python 2.7:

import numpy as np
from mpl_toolkits.basemap import Basemap, shiftgrid, addcyclic
import matplotlib.pyplot as plt

lon_tics =  np.linspace(0, 360.0, 60)
lat_tics = np.linspace(-90.0, 90.0, 30)
map_bins = np.zeros((60,30), dtype = np.int)
bin15 = np.random.randint(0,20,30) #we should see 2 strips
bin45 = np.random.randint(0,20,30) #but we get lots of strange results
map_bins[15] = bin15
map_bins[45] = bin45
m = Basemap(projection='moll',lon_0= -120,resolution='c') #NOTE changing lon_0 has weird results!
lon_bins_2d, lat_bins_2d = np.meshgrid(lon_tics, lat_tics)
xs, ys = m(lon_bins_2d, lat_bins_2d)
plt.pcolormesh(xs, ys, np.transpose(map_bins))
plt.colorbar()
m.drawparallels(np.arange(-90.,120.,30.), labels = [True])
m.drawmeridians(np.arange(0.,360.,60.), labels = [False])
plt.show()

這給出了一些非常奇怪的行為。 通過更改數據所在的bin,由Basemap()實例設置lon_0的位置或更改lat / lon bin的定義方式,我們將獲得不同的行為,例如:

  • 無縱向條
  • 1條縱向條
  • 2條縱向條(預期行為)(如圖所示:用lon_0 = -120制成)
  • 將“垃圾箱”拖到地圖的邊緣(如圖:用lon_0 = 98制成)

我已經嘗試解決這個問題一段時間了。 誰能看到我在做什么錯?

謝謝閱讀。

正確的輸出

塗抹

經過一番環顧后,我偶然發現了這篇文章: 地圖投影和強制插值

目前,這已解決了我的問題,因此,如果有其他人遇到此問題,我將進行鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM