python绘制地图时添加比例尺

目前为止我没有找到cartopy包自动添加地图比例尺的方式,我结合别人的代码写了这个手动添加比例尺的函数,个人觉得在外观上比线段比例尺漂亮一些。之所以是手动的,是因为这种方法不会根据你的地图坐标系和投影自动生成比例尺,而需要你知道实际距离和图上距离自己计算比例尺再进行绘图。

def scale_bar(ax, x, y, length, low, up, xtext, ytext, lw = 5):
    #画比例尺函数
    # x代表比例尺开始的经度
    # y代表比例尺所在纬度
    # length代表比例尺的长度,单位为多少个经度
    # low代表竖刻度线的y最小值调节距离
    # up代表竖刻度线的y最大值调节距离
    # xtext代表文字的x调节距离
    # ytext代表文字的y调节距离
    # lw代表比例尺的宽度
    step = length/5 #计算步长,画3格
    #画3个矩形
    rect1 = plt.Rectangle((x,y), step, 0.2, facecolor='black', edgecolor='black',linewidth=1)
    rect2 = plt.Rectangle((x+step,y), step, 0.2, facecolor='white', edgecolor='black',linewidth=1)
    rect3 = plt.Rectangle((x+step*2,y), step, 0.2, facecolor='black', edgecolor='black',linewidth=1)
    ax.add_patch(rect1)
    ax.add_patch(rect2)
    ax.add_patch(rect3)     
    #画4个刻度
    plt.vlines(x=x, ymin=y-(lw/100)*low, ymax=y+lw/100*up, colors="black", ls="-", lw=1)
    plt.vlines(x=x+step, ymin=y-(lw/100)*low, ymax=y+lw/100*up, colors="black", ls="-", lw=1)
    plt.vlines(x=x+step*2, ymin=y-(lw/100)*low, ymax=y+lw/100*up, colors="black", ls="-", lw=1)
    plt.vlines(x=x+step*3, ymin=y-(lw/100)*low, ymax=y+lw/100*up, colors="black", ls="-", lw=1)    
    #写标签:0,400,,800,1200,km
    plt.text(x, y+lw/100*up*ytext, '0', horizontalalignment = 'center',fontsize=20)
    plt.text(x+step, y+lw/100*up*ytext, '400', horizontalalignment = 'center',fontsize=20)
    plt.text(x+step*2, y+lw/100*up*ytext, '800', horizontalalignment = 'center',fontsize=20)
    plt.text(x+step*3, y+lw/100*up*ytext, '1200', horizontalalignment = 'center',fontsize=20)
    plt.text(x+step*3*xtext, y+lw/100*up*ytext, 'km', horizontalalignment = 'center',fontsize=20)

函数中的参数需要根据你的实际应用进行修改。以下是案例结果。
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值