chi*_*ayn 29 python matplotlib
我一直在尝试在我的代码中为长标签包装文本.我试过textwrap方法建议早在这里,但我的代码通过从使用一个CSV文件导入的数组定义yticklabels pyplot.setp()
方法.我正在使用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()
Run Code Online (Sandbox Code Playgroud)
这绘制了这样的东西
我希望标签在固定宽度后转到换行符.有任何想法吗?
gau*_*den 45
我试过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 ]
Run Code Online (Sandbox Code Playgroud)
在代码中插入此代码可以为我们提供:
小智 8
如果您正在寻找一种快速动态包装标签的方法,您可以简单地替换' '
为'\n'
:
wrapped_labels = [ label.replace(' ', '\n') for label in labels ]
Run Code Online (Sandbox Code Playgroud)