美文网首页GIS之时空数据分析
Python Matplotlib wrap text in l

Python Matplotlib wrap text in l

作者: 王叽叽的小心情 | 来源:发表于2020-09-16 11:25 被阅读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

    相关文章

      网友评论

        本文标题:Python Matplotlib wrap text in l

        本文链接:https://www.haomeiwen.com/subject/rxpcyktx.html