2015-10-20 106 views
1

我是matplotlib的初學者,並嘗試繪製我用熊貓提取的數據的boxplot。matplotlib boxplot xticks向y軸移動

我成功地獲得boxplot,看起來完全像我想要的除了xtics。這些xtics正在向yaxis轉移。我不知道爲什麼。

這裏是我的例子數組:

In [74]: print occ 

[[0.40000000000000002, 25.199999999999999, 2.0, 0.40000000000000002, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 21.199999999999999, 0.0, 0.0, 26.800000000000001, 12.800000000000001, 0.40000000000000002, 0.40000000000000002, 0.40000000000000002, 0.0], [0.0, 31.199999999999999, 0.0, 0.0, 21.600000000000001, 0.0, 0.0, 0.40000000000000002, 0.0, 4.7999999999999998], [0.0, 32.0, 0.0, 0.0, 23.199999999999999, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 37.350000000000001, 0.0, 0.0, 13.65, 0.0, 0.0, 0.0, 0.0, 1.2]] 

In [78]: dfAll.pair 
​ 
Out[78]: 
0 GLU18-Side-ASN50-Side 
1 ASN50-Side-ARG21-Side 
2 GLN14-Side-ASN42-Side 
3 ASN42-Side-GLN14-Side 
4 GLN14-Side-ARG43-Side 
5 SER46-Side-ARG15-Side 
6 ASN42-Side-ARG15-Side 
7 GLU11-Side-ASN42-Side 
8 ALA39-Main-GLN14-Side 
9 GLU18-Side-SER46-Side 
Name: pair, dtype: object 

而下面是我的matplotlib箱線圖碼:

plt.boxplot(np.array(occ), showmeans=True, whis="range", showbox=True, labels=dfAll.pair) 
plt.xticks(range(0,(dfAll.pair.shape[0])), dfAll.pair, rotation='vertical') 
plt.show() 

Box Plot Image with xticks shifted towards y axis.

任何想法,爲什麼發生這種情況,以及如何得到正確的xtics ?

回答

2

錯誤就出在這行:

plt.xticks(range(0,(dfAll.pair.shape[0])), dfAll.pair, rotation='vertical') 

,你明確地指定0爲出發點,引起該問題的事實。將其更改爲:

plt.xticks(range(1,(dfAll.pair.shape[0]+1)), dfAll.pair, rotation='vertical') 

正如一個側面說明,因爲你必須在y=0值我將擴展到ylim()也許-5

+0

這部分解決了我的問題。隨着第一個xtick在正確的位置,最後一個盒子仍然沒有抽搐。 嘗試根據您的答案。 –

+1

檢查我的編輯,你需要+1 +1 – Leb

+0

謝謝。我也明白了。 添加了我自己的答案。然後在看到您評論後刪除。謝謝。 –