Vic Podestà
Vic Podestà

Reputation:

Matplotlib square boxplot

I have a plot of two boxplots in the same figure. For style reasons, the axis should have the same length, so that the graphic box is square. I tried to use the set_aspect method, but the axes are too different because of their range and the result is terrible.

Is it possible to have 1:1 axes even if they do not have the same number of points?

Upvotes: 4

Views: 8680

Answers (3)

tom10
tom10

Reputation: 69182

You can use Axes.set_aspect to do this if you set the aspect to the ratio of axes limits. Here's an example: alt text

from matplotlib.pyplot import figure, show

fig = figure()

ax0 = fig.add_subplot(1,2,1)
ax0.set_xlim(10., 10.5)
ax0.set_ylim(0, 100.)
ax0.set_aspect(.5/100)

ax1 = fig.add_subplot(1,2,2)
ax1.set_xlim(0., 1007)
ax1.set_ylim(0, 12.)
x0, x1 = ax1.get_xlim()
y0, y1 = ax1.get_ylim()
ax1.set_aspect((x1-x0)/(y1-y0))

show()

There may be an easier way, but I don't know it.

Upvotes: 5

sangita
sangita

Reputation: 74

For loglog plots ( loglog() ) don't forget to use

ax1.set_aspect(log10(xmax/xmin)/log10(ymax/ymin))

Upvotes: 2

davidtbernal
davidtbernal

Reputation: 13684

Try axis('equal'). It's been a while since I worked with matplotlib, but I seem to remember typing that command a lot.

Upvotes: 3

Related Questions