【问题标题】:python basemap close to North pole靠近北极的python底图
【发布时间】:2018-11-27 20:41:19
【问题描述】:

我想使用底图绘制一些远在北方的数据。不幸的是,我无法显示经络。我认为这是因为它们没有显示在 80 度以北。有什么办法解决这个问题?

基本上,我使用这个代码:

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

fig = plt.figure(num=None, figsize=(12, 8) ) 
m = Basemap(projection='poly', resolution=None,
            lon_0=16, lat_0=81.8,
            llcrnrlon=9.5, llcrnrlat=80,
            urcrnrlon=22, urcrnrlat=82.5)

m.drawparallels(np.arange(80. ,82.5 ,0.5),labels=[True,False,False,False])
m.drawmeridians(np.arange(10.0, 22.0, 2.0),labels=[True,True,False,True])

m.drawmapboundary(fill_color='lightblue')

plt.show()

产生这个数字:

但我希望经络也能显示出来。如何做到这一点?

【问题讨论】:

    标签: matplotlib-basemap


    【解决方案1】:

    您的发现是 Basemap 中存在的许多缺点中的一部分。这就是创建 Cartopy 的原因。对于完成绘图的简单解决方法,您可以使用plot() 函数绘制缺失的子午线曲线,如下所示。

    from mpl_toolkits.basemap import Basemap
    import matplotlib.pyplot as plt
    import numpy as np
    
    fig = plt.figure(num=None, figsize=(12, 8)) 
    m = Basemap(projection='poly', resolution=None,
                lon_0=16, lat_0=81.8,
                llcrnrlon=9.5, llcrnrlat=80,
                urcrnrlon=22, urcrnrlat=82.5)
    
    m.drawparallels(np.arange(80.0, 83.0, 0.5), labels=[True,False,False,False])
    
    # this does not fully work, only labels are rendered, but not lines
    m.drawmeridians(np.arange(10.0, 22.0, 2.0), labels=[True,True,False,True])
    
    # a workaround to get meridians plotted
    phs = np.arange(80, 83, 0.05)
    for ea in np.arange(8.0, 22.0, 2.0):
        lds = np.ones(len(phs))*ea
        m.plot(lds, phs, latlon=True, color="k", linewidth=0.5)
    
    m.drawmapboundary(fill_color='lightblue')
    
    plt.show()
    

    结果图:

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2022-06-13
      • 2014-11-13
      相关资源
      最近更新 更多