2016-12-25 76 views
1

我已繪製了大量水平條形的水平條形圖。 有沒有什麼辦法可以防止重疊y軸標題和條形圖。或者唯一的方法是增加圖形的高度? 我已經嘗試使用: plt.figure(figsize =(13,14))但它不也工作時,我嘗試更換plt.show()plt.figure(figsize =(13, 14))顯示()如何更改繪圖的大小並防止y軸重疊?

我得到的錯誤: UserWarning:matplotlib正在使用非GUI後端,所以不能顯示 圖「目前matplotlib使用非GUI後端」

import matplotlib.pyplot as plt 
plt.rcdefaults() 
import numpy as np 
import matplotlib.pyplot as plt 

length=[477, 531, 568, 651, 1599, 1605, 1635, 1960, 2009, 2446, 2668, 3308, 3433, 3889, 4180, 4529, 5388, 6378, 7588, 7671, 7679, 8505, 8763, 8863, 8910, 9028, 9030, 10124, 10722, 10894, 11103, 11388, 12167, 12464, 14217, 14367, 14472, 16501, 18765, 19407, 19627, 20795, 21727, 21912, 22620, 24871, 25045, 25625, 25867, 27512, 30380, 30424, 31264, 32070, 32277, 33879, 35749, 35932, 37406, 37414, 40040, 42070, 42516, 42804, 44381, 46314, 48216, 48349, 50547, 50796, 53759, 54716, 65888, 81106, 86280, 104522, 179133, 189921] 
y_pos = np.arange(len(length)) 
error = np.random.rand(len(length)) 
plt.barh(y_pos, length, xerr=error*2, align='center', alpha=0.3) 
plt.yticks(y_pos, length) 
plt.xlabel('Lengths') 
plt.title('Comparison of different cuts') 
plt.show() 

這是我指的圖形:

enter image description here

回答

0

您在小空間裏繪製了非常大量的酒吧和標記每個刻度線。使這個清晰的最簡單的方法是增加劇情的長度。瞬間使用plt.figure(figsize=(10,20))使我的情節更清晰。

如果你想保持這個數字相同的大小,你有一些其他的旋鈕來調整。首先,您可以使用height參數控制每個水平條的高度。它默認爲.8,所以嘗試使用較低的值。您還可以使用fontsize參數控制yticks的大小。調整這些參數會給你不重疊的條/蜱,但需要花費分辨率。要在使用plt.savefig保存圖形時增加分辨率,請使用dpi參數將其設置爲高於默認值。

+0

如前所述,我嘗試使用* plt.figure(figsize =(13,14))*,但不知何故不適合我。如果您編輯了所提及的代碼並提供了您獲得的關於進行相關更改的情節的圖片,那將是非常好的。在此先感謝我 – Sanchit795

0

y軸上的標籤數量非常大,因此很難將它們全部放在一張圖中。增加的情節會有所幫助,還有一件事,可能有助於大小,是降低Y型刻度標記的像這樣的字體大小:

ax = plt.gca() 
for tick in ax.yaxis.get_major_ticks(): 
    tick.label.set_fontsize(6) 

也許你也只是給所有其他,或第三ÿ - 標籤。