2013-04-01 69 views
15

我一直在試圖在我的代碼中包裝長標籤的文本。我嘗試了以前建議的textwrap方法here,但是我的代碼使用pyplot.setp()方法通過從csv導入的數組定義yticklabels。否則,我使用tight_layout()進行格式設置。在matplotlib中使用setp包裝long y標籤使用setp

所以問題是 - 是否有一種方法可以很容易地將真正長的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 我想的標籤去換行符固定寬度後。有任何想法嗎?

回答

22

我已經嘗試在標籤上使用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

+0

酷修復!謝謝! – chinmayn

相關問題