2012-05-25 63 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])