【问题标题】:Rotating Basemap Meridian labels on x-axis在 x 轴上旋转底图子午线标签
【发布时间】:2015-10-06 07:30:25
【问题描述】:

是否可以旋转经线标签以使它们不再重叠?请参阅图像以获取下面的示例。我不想减少经络线的数量。

我试过了:

ax = plt.gca()
ax.set_xticklabels( meridians, rotation=45 )

不过,这在 Basemap 中没有任何作用。

【问题讨论】:

  • 这似乎是底图中的一个巨大缺陷

标签: python matplotlib label axis-labels matplotlib-basemap


【解决方案1】:

只需给出一个角度作为 mapproj.drawmeridians() 的“旋转”参数。

import mpl_toolkits.basemap as bm

mapproj = bm.Basemap(ax=ax1,projection='cyl',llcrnrlat=lat_mn, \
                     llcrnrlon= lon_mn,urcrnrlat= lat_mx, urcrnrlon=lon_mx)
mapproj.drawmeridians(lonlines, labels=[0,0,1,0],rotation=45)

就是这样! 干杯!

【讨论】:

    【解决方案2】:

    子午线标签不是 xaxis 标签。您仍然可以操作它们的文本对象:

    from mpl_toolkits.basemap import Basemap, cm
    import numpy as np
    import matplotlib.pyplot as plt
    
    # create figure and axes instances
    fig = plt.figure(figsize=(8,8))
    ax = fig.add_axes([0.1,0.1,0.8,0.8])
    # create polar stereographic Basemap instance.
    m = Basemap(projection='stere',lon_0=0,lat_0=30.,lat_ts=45.,\
                width=10000000, height=4000000,
                rsphere=6371200.,resolution='l',area_thresh=10000)
    m.drawcoastlines()
    m.drawstates()
    m.drawcountries()
    # draw parallels.
    parallels = np.arange(0.,90,5.)
    m.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
    # draw meridians
    merid_values = np.arange(0.,360.,10.)
    meridians = m.drawmeridians(merid_values,labels=[0,0,0,1],fontsize=10)
    for m in meridians:
        try:
            meridians[m][1][0].set_rotation(45)
        except:
            pass
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2020-11-30
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多