2013-07-19 446 views
0

充分旋轉後,我的條形圖列的標籤被切掉。這裏是一個要說明發生的事情爲例:防止x軸標籤在matplotlib/pyplot中被切碎

import matplotlib.pyplot as plt 

x = [1,2,3] 
y = [2,3,4] 
s = ['long_label_000000000','long_label_000000001','long_label_000000002'] 
plt.bar(x,y) 
plt.xticks(range(len(s)),s, rotation=90) 
plt.show() 

我知道,執行以下操作將導致圖表將按照畫布大小自動調整:

from matplotlib import rcParams 
rcParams.update({'figure.autolayout':True}) 

然而,這種調整高度的圖來容納標籤(包括如果標籤足夠大時產生壓扁的圖),並且我寧願保持統一的圖尺寸。

任何人都可以推薦一種方法來擴大畫布的底部,如果標籤被切碎?謝謝。

回答

1

初始化圖形時,您可以使用figsize=(w,h)來控制圖形大小。在addtion您可以手動與subplotsubplots_adjust控制你的軸位置:

w = 12 # width in inch 
h = 12 # height in inch 

fig = plt.figure(figsize=(w,h)) 

ax = fig.add_subplot(111) 
plt.subplots_adjust(bottom=0.25) 

x = [1,2,3] 
y = [2,3,4] 
s = ['long_label_000000000','long_label_000000001','long_label_000000002'] 
ax.bar(x,y) 
ax.set_xticks(range(len(s))) 
ax.set_xticklabels(s,rotation=90) 
plt.show() 
+0

沒有「rcParams.update({‘figure.autolayout’:真})」行,這導致標籤像以前一樣得到切碎。隨着這條線,圖像會像以前一樣被壓扁。 – Lamps1829

+0

@ Lamps1829看我的編輯。如果那是過多的人工參與,我 - 不幸的是 - 出於想法。 – Schorsch

+1

@Schorsh:謝謝 - adjust_bottom()部分是個不錯的主意。如果它可以與檢測文本是否被切割的東西相結合,那將是理想的,但是我發現這比rcParams解決方案更適合。 – Lamps1829