From: George Nurser <gnurser@go...> - 2009-10-25 23:30:35
The excellent transformations tutorial
explained exactly what I needed to do to include inserts in my figures.
Furthermore, it suggested to me that I should be able to do without
some very ugly code I had written to convert the bounding box for a
new axis instance from Axes coordinates to Figure coordinates, by
ax2 = fig.add_axes([l_axes,b_axes,width_axes,height_axes],transform=ax.transAxes)
However, this doesn't seem to work.
The workaround, suggested by Jae-Joon Lee earlier this year --
Bbox = matplotlib.transforms.Bbox.from_bounds(l_axes,b_axes,width_axes,height_axes)
trans = ax.transAxes + fig.transFigure.inverted()
l, b, w, h = matplotlib.transforms.TransformedBbox(Bbox, trans).bounds
ax2 = fig.add_axes([l, b, w, h])
is far more elegant than my original code, but it seems a pity that
fig.add_axes can't accept the transform directly.
Regards, George Nurser.
From: Jae-Joon Lee <lee.j.joon@gm...> - 2009-10-26 17:09:00
On Sun, Oct 25, 2009 at 7:30 PM, George Nurser <gnurser@...> wrote:
> it seems a pity that
> fig.add_axes can't accept the transform directly.
While this is certainly possible, but it is a bit tricky to get it
correct due to the underlying design of the matplotlib. On the other
hand, I think it solves some problems, but not all. And the
axes_locator attribute in the current matplotlib is an attempt for a
more general solution.
For example, what you want can be achieved with something like below.
from mpl_toolkits.axes_grid.inset_locator import InsetPosition
ax2=axes([0, 0, 0, 0]) # The initial value is ignored in this example
ax2.set_axes_locator(InsetPosition(ax, [0.2, 0.2, 0.4, 0.4]))
Get latest updates about Open Source Projects, Conferences and News.