【问题标题】:Set Basemap meridians or parallels labels within plot or change color of text在绘图内设置底图子午线或平行线标签或更改文本颜色
【发布时间】:2017-12-03 19:47:12
【问题描述】:

我正在使用 Python 中的 Basemap 制作地图,我希望子午线/平行线位于绘图内部或文本(即 0˚N)为白色。我想这样做,以便我可以将图形设置为黑色背景,但仍然可以读取轴。

这就是我所拥有的:

# plot lines of longitudes
m.drawparallels(np.arange(-90.,120.,1),labels=[1,1,1,1])

# plot latitudes
m.drawmeridians(np.arange(-180.,180,1),labels=[1,0,0,1])

如果有帮助,这里是使用的底图实例和包:

m = Basemap(resolution=None, # c, l, i, h, f or None
        projection='merc',
        llcrnrlon=33.795774, llcrnrlat=-6.182035, 
        urcrnrlon=34.6000037, urcrnrlat=6.236179,epsg=5520)  

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

但是它将标签设置在地图之外并且它们是黑色的。

【问题讨论】:

    标签: python python-3.x matplotlib plot matplotlib-basemap


    【解决方案1】:

    要更改刻度或文本颜色,您需要使用drawmeridians/drawparallels 的附加参数。 color 更改刻度颜色,textcolor 更改文本颜色。您可以通过传入额外的文本 kwargs (see here) 来更改文本的更多属性。我还抓住了图形对象并更改了背景颜色以显示它在黑色时工作。如果您想用不同的背景颜色保存图形,请注意 savefig 的附加参数。

    import matplotlib.pyplot as plt
    from mpl_toolkits.basemap import Basemap
    
    m = Basemap(resolution='h', # c, l, i, h, f or None
            projection='merc',
            llcrnrlon=33.795774, llcrnrlat=-6.182035, 
            urcrnrlon=34.6000037, urcrnrlat=6.236179,epsg=5520)  
    
    m.drawcoastlines()
    
    # plot lines of longitudes
    m.drawparallels(np.arange(-90.,120.,1),labels=[1,1,1,1], color='white', textcolor='white')
    
    # plot latitudes
    m.drawmeridians(np.arange(-180.,180,1),labels=[1,0,0,1], color='white', textcolor='white')
    
    fig = plt.gcf()
    fig.set_facecolor('black')
    fig.savefig("white ticks.png", facecolor=fig.get_facecolor(), edgecolor='none')
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2015-10-06
      • 2013-09-08
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 2020-06-09
      • 2015-04-16
      • 1970-01-01
      • 2015-04-07
      相关资源
      最近更新 更多