lllllll
lllllll

Reputation: 4845

Matplotlib many subplots xtick labels intercepting


I'm plotting many subplots in the same figure. I encounter the problem that xtick labels intercept one with each other. I do not want any space between the subplots. Here is an example:
Example with squares and lines

In particular I would like xtick labels not to be above/below the green lines, just like it happens at the points indicated with red squares.
One idea I had so far was, in a case where my max=4 and min=0, I'd draw tick labels for 1 2 and 3 at their respective locations, e.g 1,2,3. Then I'd draw 4 at the position 3.8 and 0 at the position 0.2. Any ideas?
thanks!

Upvotes: 0

Views: 947

Answers (3)

GCien
GCien

Reputation: 2349

The whole plt.figure routine should look something like this:

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

Upvotes: 0

user3125347
user3125347

Reputation:

This is how I would do it:

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

And you can use:

axScatter.yaxis.set_major_formatter(nullfmt)

To make the y axis labels disappear for the top right and bottom right plots.

Upvotes: 1

Steve Tjoa
Steve Tjoa

Reputation: 61094

Not exactly what you asked for, but a quick solution is to set the alignment parameter:

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

This will apply to all ticks.

Upvotes: 2

Related Questions