adjustText实践——调整matplotlib散点图标签,避免重复

简介

博主需要在全球地图上标注出化石点数据,由于化石产出点一样或很近,导致呈现的效果不理想,如果自动添加标签,又会重叠。近期看到adjustText库可以自动调整标签,避免重复。本文记录学习过程,并将在最后展示博主的图示,期待一下效果。

原始效果

不加标签

在这里插入图片描述

加上标签

在这里插入图片描述

手动调整注释位置也不可能

adjustText认识

1. 简介

学习资料来自adjustText官网——https://adjusttext.readthedocs.io/en/latest/

adjustText帮助用于调整matplotlib绘图中的注释文本布局,尽可能避免或减少注释文件间的重叠。

通过检测文本的边界重叠,尝试移动它们以减少重叠来实现功能。本库受到用于R/gglot2的ggrepel启发。

2. 函数

该库仅有1个函数:

adjustText.adjust_text(texts, x=None, y=None, objects=None, avoid_self=True, force_text: tuple[float, float] = (0.1, 0.2), force_static: tuple[float, float] = (0.1, 0.2), force_pull: tuple[float, float] = (0.01, 0.01), force_explode: tuple[float, float] = (0.01, 0.02), expand: tuple[float, float] = (1.05, 1.1), explode_radius='auto', ensure_inside_axes=True, expand_axes=False, only_move={'explode': 'xy', 'pull': 'xy', 'static': 'xy', 'text': 'xy'}, ax=None, min_arrow_len=5, time_lim=0.5, *args, **kwargs)

反复地、迭代地调整文本的位置
在绘图完成后再调用adjust_text()函数。

3. 参数解读

参数传参类型含义
text列表matplotlib.text.Text对象组成的列表
x类似数组文本注释的坐标x值;如若没有即用文本坐标
y同上同上
objects列表或PathCollection需要避开的matplotlib对象;这些对象必须有get_window_extent()方法;或是一个PathCollection或一组Bbox对象
avoid_self布尔值,默认True是否让文本避开原始位置
force_text元组,默认(0.1, 0.2)文本的调整空间就是两值乘积的面积
force_static元组,默认(0.05, 0.1)散点和其他对象之间的调整空间
force_pull浮点数,default (0.001, 0.0001)也是调整空间,将文本拉向原始位置
force_explode浮点数,default (0.001, 0.0001)也是调整空间,文本间保持的距离
expand类似数组,default (1.05, 1.2)有两个值的列表或元组(x, y),将文本拉开的距离控制
explode_radius浮点数或"auto",默认"auto"在一开始的显示单位中,检查离文本最近的对象移动多远,那么在100的数量级上“auto”使用的是最大文本的大小
ensure_inside_axes布尔值,默认True是否强制文本停留在坐标轴内
expand_axes布尔值,默认Default在调整位置之前,是否扩展坐标轴以适应所有文本
only_move字典,默认{‘points’:‘xy’, ‘text’:‘xy’, ‘objects’:‘xy’}对于某些类型的重叠,将文本移动限制在某些轴上的字典。有效的键是pointstextobjects。有效值有’ ‘、’ x ‘、’ y ‘和’ xy ‘。例如,only_move={’ points ': ’ y ', ’ text ': ’ xy ', ’ objects ': ’ xy '}禁止文本沿x轴移动,因为它们与点重叠。
axmatplotlib axe,默认当前axe (plt.gca())ax object with the plot
min_arrow_len浮点数,默认5如果文本比这个距离目标点更近,则不要添加箭头(以显示单位为单位)。
time_lim浮点数,默认0.1调整需要多少时间,以秒为单位
kwargs在所有优化完成后,任何参数都将被输入obj:FancyArrowPatch,以便在需要时绘制连接的箭头。

尝试解决

在这里插入图片描述

后记

没有很好地解决。而且该库作者早已停更。官方文档和脚本有出入,应该是后续有人优化过。有时间仔细研究研究。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ALittleHigh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值