how to fix axes position by using set_position method in python matplotlib?
axes, matplotlib, position, python
Solution
Try setting the position by specifying the parameters as a `Bbox` object:
>>> ax2.set_position(matplotlib.transforms.Bbox(array([[0.125,0.63],[0.25,0.25]])))
>>> ax2.get_position()
Bbox(array([[ 0.125, 0.63 ],
[ 0.25 , 0.25 ]]))
>>> draw()
>>> ax2.get_position()
Bbox(array([[ 0.125, 0.63 ],
[ 0.25 , 0.25 ]]))
With this you can see the settings are round-tripping like you would expect.
In addition, you could instead look at the results as a `tuple` like so:
>>> a.set_position([0.125,0.63,0.25,0.25])
>>> a.get_position().bounds
(0.125, 0.63, 0.25, 0.25)
It just depends if you want to look at the location/position as a bounding box: `x0,y0` by `x1,y1`, or instead by a location and size: `x,y,width,height`.
Currently you are telling it to set a `x,y,width,height`, then it's telling you the `x0,y0,x1,y1`.
Problem
I think this is quite easy but I searched the internet and matplotlib users mailing list and not able to find an answer. ax2 is an inset axes within the "ax" axes in figure "fig", which I make by following here: http://matplotlib.sourceforge.net/examples/pylab_examples/axes_demo.html but now my problem is that I cannot fix the ax2 the exact position I want, it seems that draw() command change this: ``` In [352]: ax2.set_position([0.125,0.63,0.25,0.25]) In [353]: ax2.get_position() Out[353]: Bbox(array([[ 0.125, 0.63 ], [ 0.375, 0.88 ]])) In [354]: draw() In [355]: ax2.get_position() Out[355]: Bbox(array([[ 0.15625, 0.63 ], [ 0.34375, 0.88 ]])) ``` notice that, after "draw()" command, the x0 of ax2 changed. could anyone give any hints? thanks!