Wrapping long y labels in matplotlib tight layout using setp
matplotlib, python
Solution
I have tried using `textwrap` on the labels and it works for me.
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 ]
Inserting this in your code gives us:
Problem
I've been trying to wrap text for long labels in my code. I tried the textwrap method suggested earlier here, but my code defines yticklabels through an array imported from a csv using the `pyplot.setp()` method. I'm using `tight_layout()` for the formatting otherwise. So the question is - is there a way to wrap the really long y labels to newlines easily? Here is some sample code that I'd like a fix for: ``` 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() ``` This plots something like this I'd like the labels to go to newlines after a fixed width. Any ideas?