2012-05-25 97 views
0


我正在繪製許多subplots在同一圖中。我遇到了xtick標籤相互攔截的問題。我不希望子圖之間有任何空間。 下面是一個例子:
Example with squares and lines http://i47.tinypic.com/11rwz2g.pngMatplotlib許多subplots xtick標籤攔截

特別我想XTICK標籤不被上面/下面的綠線,就像它發生在與紅色正方形表示的點。
到目前爲止,我的一個想法是,在我的max = 4和min = 0的情況下,我會在它們各自的位置繪製1 2和3的刻度標籤,例如1,2,3。然後我在3.8的位置抽4,在0.2的位置抽0。有任何想法嗎?
謝謝!

回答

2

不是你問什麼了,但一個快速的解決方案是設置對齊參數:

pylab.xticks(..., horizontalalignment='left') 
pylab.yticks(..., verticalalignment='bottom') 

這將適用於所有的蜱。

+0

該死,這是如此接近!單方面的解決方案,感謝您的洞察力。 – lllllll

+0

是的 - 我個人更喜歡所有的蜱都以同樣的方式排列。它感覺「整潔」。只有一個滴答聲,我會感到有點不舒服。但這只是個人喜好。另一種選擇是簡單地從x軸刪除勾號「0」,並從y軸刪除勾號「4」和「8」。他們的價值可以從其他人推斷出來;他們的缺席並沒有真正減損圖表。我認爲Edward Tufte會同意。 :) http://www.edwardtufte.com/tufte/books_vdqi –

1

這是我會怎麼做:

axScatter.set_xticks([0, 1, 2, 3, 4 ,5 ,6]) 
axScatter.set_yticks([-8, -6, -4, -2, 0, 2, 4, 6]) 

你也可以使用:

axScatter.yaxis.set_major_formatter(nullfmt) 

爲了使y軸的標籤消失右上和右下圖。

1

整個plt.figure程序應該是這個樣子:

fig = plt.figure() 

axplot_topleft = fig.add_subplot(2,2,1) 
axplot_topleft.xaxis.set_major_formatter(nullfmt) 
axplot_topleft.set_yticks([-8, -6, -4, -2, 0, 2, 4, 6]) 

axplot_topright = fig.add_subplot(2,2,2) 
axplot_topright.xaxis.set_major_formatter(nullfmt) 
axplot_topright.yaxis.set_major_formatter(nullfmt) 

axplot_bottomleft = fig.add_subplot(2,2,3) 
axplot_bottomleft.set_xticks([0, 1, 2, 3, 4 ,5 ,6]) 
axplot_bottomleft.set_yticks([-8, -6, -4, -2, 0, 2, 4, 6]) 

axplot_bottomright = fig.add_subplot(2,2,4) 
axplot_bottomright.yaxis.set_major_formatter(nullfmt) 
axplot_bottomright.set_xticks([0, 1, 2, 3, 4 ,5 ,6])