【问题标题】:Cartopy: wrong longitude labels when plotting regional mapsCartopy:绘制区域地图时的经度标签错误
【发布时间】:2021-10-11 13:53:35
【问题描述】:

我试图在 119degE 和 90degW 之间绘制区域地图,但我的经度标签有问题。这是我的尝试:

import numpy as np
import cartopy.crs as ccrs
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
from matplotlib import pyplot as plt

lats = -31
latn =  31
lon1 = 119  
lon2 = 301   

plt.figure()                            
proj = ccrs.PlateCarree(central_longitude=210)    
ax = plt.axes(projection=proj)   
ax.set_extent([lon1, lon2, lats, latn], proj)  
ax.coastlines()                   
ax.set_xticks(np.arange(120,330,30) ,crs=ccrs.PlateCarree())
ax.set_yticks(np.arange(-30, 40,10) ,crs=ccrs.PlateCarree()) 
lon_formatter = LONGITUDE_FORMATTER
lat_formatter = LATITUDE_FORMATTER
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)     

ax.set_ylabel(' ')   
ax.set_xlabel(' ')
plt.show()

结果:

以下是问题:

  1. 我将ax.set_extent 设置为lon1lon2 给出的经度范围。但该图显示的是全球经度。
  2. 经度刻度标签错误(应为 120E、150E、180、150W...)。

如何解决这些问题?

我使用的cartopy的版本是v0.20.0。

【问题讨论】:

    标签: python cartopy


    【解决方案1】:

    在适当的设置下使用gridlines() 函数。请注意,函数中使用选项crs=ccrs.PlateCarree() 来获取正确的地理经度。

    import numpy as np
    import cartopy.crs as ccrs
    from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
    from matplotlib import pyplot as plt
    
    lats = -31
    latn =  31
    lon1 = 119  
    lon2 = 301   
    
    plt.figure(figsize=[9,6])                            
    proj = ccrs.PlateCarree(central_longitude=210)    
    ax = plt.axes(projection=proj)   
    ax.set_extent([lon1, lon2, lats, latn], proj)  
    ax.coastlines()
    
    gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, 
                      xlocs=np.arange(-150,360,30), ylocs=np.arange(-30, 40,10), 
                      x_inline=False, y_inline=False, linewidth=0.33, color='k',alpha=0.5)
    gl.right_labels = False
    gl.top_labels = False
    
    ax.set_ylabel(' ')   
    ax.set_xlabel(' ')
    plt.show()
    

    【讨论】:

    • 谢谢!结果更有意义。
    猜你喜欢
    • 2021-01-04
    • 2020-06-22
    • 1970-01-01
    • 2020-12-19
    • 2021-09-05
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多