簡體   English   中英

Python - 用 pcolormesh 和底圖繪圖

[英]Python - Plot with pcolormesh and basemap

例如,我想用立體投影繪制我的數據。 但是,當我嘗試繪制時,除了大​​陸之外沒有繪制任何內容。

為了解釋一下,這是我的數據圖的一個數字:

plt.pcolormesh(longrid_t, latgrid_t,totvart_t)

其中longrid_t是經度, latgrid_t是緯度, totvart_t是我想要繪制的數據。

這是僅使用 pcolormesh(無底圖)作為plt.pcolormesh(longrid_t, latgrid_t,totvart_t)繪制的圖:

僅使用 pcolormesh 繪制的圖(沒有底圖:plt.pcolormesh(longrid_t, latgrid_t,totvart_t)

現在,我嘗試使用立體投影繪制這些數據:

map = Basemap(width=10000000,height=6000000, resolution='l',projection='stere',
        lat_0=40.,lon_0=-40.)
map.fillcontinents(color='darkgrey',lake_color='darkgrey')
map.drawcoastlines()
map.drawparallels(arange(-90, 91., 10.), labels=[1, 0, 0, 1],
                dashes=[1, 1], linewidth=0.25, color='0.5')
map.drawmeridians(arange(-180., 181., 10.), labels=[1, 0, 0, 1],
                dashes=[1, 1], linewidth=0.25, color='0.5')

map.pcolormesh(longrid_t, latgrid_t, totvart_t, cmap='jet')
map.colorbar()

然而,這個立體投影的結果並不是我所期望的:

立體投影

我也嘗試過其他預測。 並且還使用 pcolor 和 contourf 而不是 pcolormesh。 但它給了我同樣的結果。

你有想法嗎?

您必須將坐標數據轉換為投影 xy 坐標,然后使用轉換后的坐標進行繪圖:

map = Basemap(width=10000000,height=6000000, resolution='l',projection='stere',
        lat_0=40.,lon_0=-40.)
map.fillcontinents(color='darkgrey',lake_color='darkgrey')
map.drawcoastlines()
map.drawparallels(arange(-90, 91., 10.), labels=[1, 0, 0, 1],
                dashes=[1, 1], linewidth=0.25, color='0.5')
map.drawmeridians(arange(-180., 181., 10.), labels=[1, 0, 0, 1],
                dashes=[1, 1], linewidth=0.25, color='0.5')
# convert lat-lon to projection coordinate system
xpt,ypt = m(longrid_t, latgrid_t) # convert to projection map

map.pcolormesh(xpt, ypt, totvart_t, cmap='jet')
map.colorbar()

它可以將latlon=True kwarg 添加到我對map.pcolormesh調用中

因此

map.pcolormesh(longrid_t, latgrid_t, totvart_t, cmap='jet',latlon=True)

暫無
暫無

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

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