Python 使用setp在matplotlib紧密布局中包装长y标签
我一直在尝试在代码中为长标签包装文本。我尝试了前面建议的textwrap方法,但我的代码通过使用Python 使用setp在matplotlib紧密布局中包装长y标签,python,matplotlib,Python,Matplotlib,我一直在尝试在代码中为长标签包装文本。我尝试了前面建议的textwrap方法,但我的代码通过使用pyplot.setp()方法从csv导入的数组定义了yticklabels。我正在使用tight\u layout()进行格式化,否则 所以问题是-有没有一种方法可以很容易地将很长的y标签包装成换行符 以下是我想要修复的一些示例代码: import numpy as np import matplotlib.pyplot as plt labels=('Really really really r
pyplot.setp()
方法从csv导入的数组定义了yticklabels。我正在使用tight\u 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()
这是这样的情节
我希望标签在固定宽度后转到换行符。有什么想法吗?我试过在标签上使用
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 ]
在您的代码中插入此选项将为我们提供:
如果您正在寻找一种快速动态包装标签的方法,只需将
'
替换为'\n'
,如下所示:
wrapped_labels = [ label.replace(' ', '\n') for label in labels ]