Matplotlib许多子图xtick标签拦截

时间:2012-05-25 14:09:10

标签: python matplotlib scipy


我正在绘制同一图中的许多子图。我遇到了xtick标签互相拦截的问题。我不希望子图之间有任何空格。 这是一个例子:
Example with squares and lines http://i47.tinypic.com/11rwz2g.png

特别是我希望xtick标签不要高于/低于绿线,就像它出现在用红色方块表示的点一样。
我到目前为止的一个想法是,在我的max = 4和min = 0的情况下,我会在各自的位置绘制1和3的刻度标签,例如1,2,3。然后我在位置3.8处绘制4,在位置0.2处绘制0。有任何想法吗?
谢谢!

3 个答案:

答案 0 :(得分:2)

不完全符合您的要求,但快速解决方案是设置对齐参数:

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

这适用于所有刻度。

答案 1 :(得分: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轴标签消失。

答案 2 :(得分:0)

整个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])