Обертка длинных y ярлыков в матплотлибе с малым размером с помощью setp

Я пытаюсь обернуть текст для длинных меток в моем коде. Я попробовал метод textwrap, предложенный ранее здесь, но мой код определяет yticklabels через массив, импортированный из csv, используя метод 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()

Это что-то вроде этого enter image description here Я бы хотел, чтобы метки перемещались в новые строки после фиксированной ширины. Любые идеи?

Ответы

Ответ 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 ]

Вставка этого кода позволяет нам:

Wrapped labels