【问题标题】:Wrapping long y labels in matplotlib tight layout using setp使用 setp 在 matplotlib 紧凑布局中包装长 y 标签
【发布时间】:2013-04-01 09:14:13
【问题描述】:

我一直在尝试在我的代码中为长标签换行。我尝试了之前建议的 textwrap 方法here,但我的代码通过使用pyplot.setp() 方法从 csv 导入的数组定义了 yticklabels。否则我使用tight_layout() 进行格式化。

所以问题是 - 有没有办法将非常长的 y 标签轻松包装到换行符?

这是一些我想要修复的示例代码:

import numpy as np
import matplotlib.pyplot as plt

labels=('Really really really really really really long label 1', 'Really really really really really really long label 2', 'Really really really really really really long label 3')
values=(30,50,40)

fig = plt.figure()
ax=fig.add_subplot(111)

plt.ylim((0,40))
for i in np.arange(3):
    plt.barh(15*i, values[i])

plt.yticks(15*np.arange(3))
plt.setp(ax.set_yticklabels(labels))

plt.tight_layout()
plt.show()

这会绘制这样的图 我希望标签在固定宽度后转到换行符。有什么想法吗?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我尝试在标签上使用textwrap,它对我有用。

    from textwrap import wrap
    labels=['Really really really really really really long label 1',
            'Really really really really really really long label 2',
            'Really really really really really really long label 3']
    labels = [ '\n'.join(wrap(l, 20)) for l in labels ]
    

    在你的代码中插入这个给我们:

    【讨论】:

      【解决方案2】:

      如果您正在寻找一种快速动态包装标签的方法,您可以简单地将' ' 替换为'\n',如下所示:

      wrapped_labels = [ label.replace(' ', '\n') for label in labels ]
      

      【讨论】:

        猜你喜欢
        • 2018-12-14
        • 1970-01-01
        • 2011-02-12
        • 1970-01-01
        • 2014-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-25
        相关资源
        最近更新 更多