GIS之时空数据分析

Python Matplotlib wrap text in l

2020-09-16  本文已影响0人  王叽叽的小心情

问题

在Python绘图中想要自动控制图例的label的长度,不然很容易出现标签过长的问题,容易出现下面的问题


图例标签过长,超出了图片范围

解决方法

查找了很久都没找到解决方法,主要原因是中文参考内容过少,英文关键词搜索不对,最后发现其实很简单,修改文本长度即可,可通过textwrap.fill()方法进行文本长度的调节,再配合ax.legend()中的属性bbox_to_anchor进行调整,关键代码如下:

# 记得导入textwrap包
from textwrap import fill

# 绘图时即设置标签长度
axs = sns.kdeplot(df['rca'], label=fill(label, 30), ax=axs, legend=True, linewidth=4)
axs.legend(bbox_to_anchor=(0.4, 0.6, 0.5, 0.3))

# 绘图完毕整体设置标签
labels = [fill(label, 20) for label in label_list]
axs.legend(labels , bbox_to_anchor=(0.4, 0.6, 0.5, 0.3))

结果图

标签长度控制完毕

核心思想:

采用textwrap.fill(label, 30)进行长度控制

参考资料:https://stackoverflow.com/questions/47057789/matplotlib-wrap-text-in-legend

上一篇下一篇

猜你喜欢

热点阅读