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