Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用setp在matplotlib紧密布局中包装长y标签_Python_Matplotlib - Fatal编程技术网

Python 使用setp在matplotlib紧密布局中包装长y标签

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

我一直在尝试在代码中为长标签包装文本。我尝试了前面建议的textwrap方法,但我的代码通过使用
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 ]