axes placement depends on figsize?

Ramiro Simões Lopes wrote:

Thanks, it works.
But I also found out that I was setting figsize to a smaller size than the plot was occupying thus it wasn't working. The anchor kwarg isn't needed if the figure is big enough.

I still don't understand why the axes aspect ratio should depend on figsize though.
I mean, if I set figsize=(10,10) and plot everything, it works. But if I set it to like (10,15) then the axes have spacing between them in the vertical direction, even though I'm very specific about the coordinates.
How can 0.01 mean one thing in the horizontal direction and other in the vertical direction?

Ramiro

Ramiro,

(When corresponding on the list, please use "reply to all" so that everything stays on the list.)

First, the 0.01 is 0.01 times the figure width for the horizontal, and 0.01 times the figure height for the vertical, so they are different physical dimensions if the figure aspect ratio is not 1:1. Second, setting the aspect='equal' tells mpl to *adjust* the axes box so that it has a 1:1 aspect ratio *regardless* of the figure dimensions. It can only do this by adding space, either on the sides or top and bottom.

Eric

···

2008/12/18 Eric Firing <efiring@...202... <mailto:efiring@…202…>>

    ramirodsl wrote:

        Can someone explain to me how/why the figure normalized [0,1]
        coordinates
        depends on the figsize property? At least this is what it looks
        like to me.
        This affects axes placement and so far I haven't been able to do
        what I
        want.

        I want to have square plots placed without spacing between them
        and with a
        little margin on the left and top. So I tried:

        s=0.4
        axes([0.01, 0.99-s, s, s],aspect='equal')
        axes([0.01+s, 0.99-s, s, s],aspect='equal')
        axes([0.01, 0.99-2*s, s, s],aspect='equal')
        axes([0.01+s, 0.99-2*s, s, s],aspect='equal')

        The vertical positioning works as I expected but the x
        positioning does not
        work. The axes have spacing between them - which means that 0.1
        represents a
        different size in x or in y - and I just can't understand that
        behavior.

    The problem is that you are giving conflicting instructions. Your
    axes command is initially saying to make the boxes with the given
    proportions of the figure, regardless of the dimensions or aspect
    ratio of that figure; but setting the aspect is overriding that by
    requiring the boxes to be square. You can still get the behavior
    you want, however, by adding an anchor kwarg to each axes call. To
    make sure the
    boxes cluster together, add anchor='SE' to the upper left axes,
    anchor='SW' to the upper right, and 'NE' and 'NW' to the lower left
    and right, respectively.

    Eric

        Now if I add:
        figure(figsize=(5,5))
        it works

        But this is not the solution I need because the real plot I'm
        trying to do
        is a 6x5 (6 axes per 5 axes, subplots if you mean) plot with
        horizontal
        spacing only between the 3rd and 4th axes. There is no way I
        could now the
        correct aspect ratio that I should set figsize to, to get it right.

        How could I manage this?

        Thank you

        Ramiro