Python+Basemap 经纬度标签的旋转与间距调整

36 篇文章 43 订阅
12 篇文章 15 订阅

前言

这是个非常个人的需求,原图如下,可以看到经度的标注是水平的,多子图并列的时候占空间很大,也不够美观。所以目的是将它垂直显示。
在这里插入图片描述

垂直显示经度标签

basemap绘制投影影像参看前面的博客。
下面两句是分别是绘制经纬线,查看它俩的方法和属性,发现并没有控制标签角度的部分。
但是basemap是基于matplotlib库的,所以可以通过操作matplotlib来实现目的。

drawparallels = m.drawparallels(parallels,labels=[True,False,False,False], linewidth=0.1) # labels = [left,right,top,bottom]
drawmeridians = m.drawmeridians(meridians,labels=[False,False,False,True], linewidth=0.1)

果然,经过查看,经纬度的标注是matplotlib中的text对象,而text对象是有控制旋转角度的set_rotation方法的。
在这里插入图片描述
绘制的经线对象是一个字典,每一个经度标注都是一对键值。

drawparallels
Out[3]: 
{43.6: ([<matplotlib.lines.Line2D at 0x1e302f12488>],
  [Text(-630.9148182665423, 18072.228086205356, '43.6°N')]),
 43.800000000000004: ([<matplotlib.lines.Line2D at 0x1e302f12408>],
  [Text(-630.9148182665423, 40310.456802672335, '43.8°N')])}

定位到第一个经度标注text对象位置。

drawparallels[list(drawparallels.keys())[0]][1][0]

设置标注的旋转角度为90,垂直显示。

drawparallels[list(drawparallels.keys())[0]][1][0].set_rotation(90)

在这里插入图片描述

更改标注离轴间距

同理,调用text对象的set_poistion()方法.
下面括号里的值为x y坐标值,可以先get_position()获取原始坐标,然后进行调整。

drawmeridians[list(drawmeridians.keys())[0]][1][0].set_position((4290.220764212488, -1000.9148182665423))
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值