I\'m using matplotlib
to plot a barh
plot to a file. Unfortunate, the YTickLaels are a bit too long and the plot area won\'t move to the right auto
According to matplotlib mailing list, there is no automatic way of doing this. However, you can manually ajdust subplot padding by using figure.subplots_adjust method. Placing fig.subplots_adjust(left = 0.4)
after ax = fig.add_subplot(111)
in your code yields following result:
Actually, there is an automatic way of doing this now: tight_layout.
In your case:
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
D = {u'Label1':26, u'Label2 is longer than others': 17,
u'Label3 is not so short either':30}
fig = plt.figure(figsize=(5.5,3),dpi=300)
ax = fig.add_subplot(111)
ax.grid(True,which='both')
bar = ax.barh(range(1,len(D)+1,1),D.values(),0.4,align='center')
plt.yticks(range(1,len(D)+1,1), D.keys(), size='small')
fig.tight_layout() # <---- ADD THIS
fig.savefig('D_bar.png')