2015-10-20 78 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

谢谢。我也明白了。 添加了我自己的答案。然后在看到您评论后删除。谢谢。 –