On Tue, Jun 1, 2010 at 6:00 PM, Benjamin Root
<ben.r...@ou.edu <mailto:ben.r...@ou.edu>> wrote:
Right, that is sort of what I am asking. My thinking is
that Basemap could use 'box-forced' instead of 'box' for
the adjustable parameter in order to make it and
AxesGrid compatible. Usually, if one wants to use
AxesGrid, they all should have the same domain and
aspect ratio. I just have no clue what sort of
repricussions that has for other use cases.
So far, this has worked just fine for me, but I hardly
represent the normal use cases of Basemap and AxesGrid.
Ben Root
On Tue, Jun 1, 2010 at 5:20 PM, Jae-Joon Lee
<lee.j.j...@gmail.com <mailto:lee.j.j...@gmail.com>> wrote:
If Basemap explicitly sets aspect=1 and
adjustable="box" at the same
time, you cannot use this with any axes that shares
its axis with
others (including the axes created by the AxesGrid).
You need to somehow avoid the set_aspect call with
adjustable"box"
(you can set box-forced in stead).
-JJ
On Tue, Jun 1, 2010 at 2:45 PM, Benjamin Root
<ben.r...@ou.edu <mailto:ben.r...@ou.edu>> wrote:
>
> On a related note, I have noticed an
incompatibility between AxesGrid and
> Basemap. It appears that Basemap will explicitly
set adjustable='box' when
> it calls ax.set_aspect(), but AxesGrid will error
out, saying that it has to
> be 'datalim'. What are the implications of using
'box-forced' instead of
> 'box' in Basemap?
>
> Ben Root
>
> On Thu, May 27, 2010 at 1:59 PM, Jae-Joon Lee
<lee.j.j...@gmail.com <mailto:lee.j.j...@gmail.com>>
wrote:
>>
>> ax1 = subplot(121)
>> ax2 = subplot(122, sharex=ax1, sharey=ax1)
>>
>> ax1.set_adjustable("box-forced")
>> ax2.set_adjustable("box-forced")
>>
>> arr1 = np.arange(100).reshape((10, 10))
>> ax1.imshow(arr1)
>>
>> arr2 = np.arange(100, 0, -1).reshape((10, 10))
>> ax2.imshow(arr2)
>>
>> Note the use of set_adjustable("box-forced").
>> sharex and sharey does not get along with axes of
aspect=1 &
>> adjustable="box".
>>
>> -JJ
>>
>>
>>
>> On Thu, May 27, 2010 at 2:10 PM,
<phob...@geosyntec.com
<mailto:phob...@geosyntec.com>> wrote:
>> > Do the “sharex” and “sharey” kwargs help?
>> >
>> >
>> >
http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axes
>> >
>> >
>> >
http://matplotlib.sourceforge.net/examples/pylab_examples/shared_axis_demo.html
>> >
>> > -paul
>> >
>> >
>> >
>> > From: Adam Fraser
[mailto:adam.n.fra...@gmail.com
<mailto:adam.n.fra...@gmail.com>]
>> > Sent: Thursday, May 27, 2010 10:44 AM
>> > To: matplotlib-users
>> > Subject: [Matplotlib-users] Is there a way to
link axes of imshow plots?
>> >
>> >
>> >
>> > Suppose I have a figure canvas with 3 plots...
2 are images of the same
>> > dimensions plotted with imshow, and the other
is a scatterplot. I'd like
>> > to
>> > be able to link the x and y axes of the imshow
plots so that when I zoom
>> > in
>> > one, the other zooms to the same coordinates,
and when I pan in one, the
>> > other pans as well.
>> >
>> >
>> >
>> > I started hacking my way around this by
>> > subclassing NavigationToolbar2WxAgg
>> > (shown below)... but there are several problems
here.
>> >
>> > 1) This will link the axes of all plots in a
canvas since all I've done
>> > is
>> > get rid of the checks for a.in_axes()
>> >
>> > 2) This worked well for panning, but zooming
caused all subplots to zoom
>> > from the same global point, rather than from
the same point in each of
>> > their
>> > respective axes.
>> >
>> >
>> >
>> > Can anyone suggest a workaround?
>> >
>> >
>> >
>> > Much thanks!
>> >
>> > -Adam
>> >
>> >
>> >
>> > from matplotlib.backends.backend_wxagg import
NavigationToolbar2WxAgg as
>> > NavigationToolbar
>> >
>> > class MyNavToolbar(NavigationToolbar):
>> >
>> > def __init__(self, canvas, cpfig):
>> >
>> > NavigationToolbar.__init__(self, canvas)
>> >
>> >
>> >
>> > # override
>> >
>> > def press_pan(self, event):
>> >
>> > 'the press mouse button in pan/zoom
mode callback'
>> >
>> >
>> >
>> > if event.button == 1:
>> >
>> > self._button_pressed=1
>> >
>> > elif event.button == 3:
>> >
>> > self._button_pressed=3
>> >
>> > else:
>> >
>> > self._button_pressed=None
>> >
>> > return
>> >
>> >
>> >
>> > x, y = event.x, event.y
>> >
>> >
>> >
>> > # push the current view to define home
if stack is empty
>> >
>> > if self._views.empty(): self.push_current()
>> >
>> >
>> >
>> > self._xypress=[]
>> >
>> > for i, a in
enumerate(self.canvas.figure.get_axes()):
>> >
>> > # only difference from overridden
method is that this one
>> > doesn't
>> >
>> > # check a.in_axes(event)
>> >
>> > if x is not None and y is not None
and a.get_navigate():
>> >
>> > a.start_pan(x, y, event.button)
>> >
>> > self._xypress.append((a, i))
>> >
>> >
self.canvas.mpl_disconnect(self._idDrag)
>> >
>> >
>> >
self._idDrag=self.canvas.mpl_connect('motion_notify_event',
>> > self.drag_pan)
>> >
>> >
>> >
>> > def press_zoom(self, event):
>> >
>> > 'the press mouse button in zoom to rect
mode callback'
>> >
>> > if event.button == 1:
>> >
>> > self._button_pressed=1
>> >
>> > elif event.button == 3:
>> >
>> > self._button_pressed=3
>> >
>> > else:
>> >
>> > self._button_pressed=None
>> >
>> > return
>> >
>> >
>> >
>> > x, y = event.x, event.y
>> >
>> >
>> >
>> > # push the current view to define home
if stack is empty
>> >
>> > if self._views.empty(): self.push_current()
>> >
>> >
>> >
>> > self._xypress=[]
>> >
>> > for i, a in
enumerate(self.canvas.figure.get_axes()):
>> >
>> > # only difference from overridden
method is that this one
>> > doesn't
>> >
>> > # check a.in_axes(event)
>> >
>> > if x is not None and y is not None
and a.get_navigate() and
>> > a.can_zoom():
>> >
>> > self._xypress.append(( x, y, a,
i, a.viewLim.frozen(),
>> > a.transData.frozen()))
>> >
>> >
>> >
>> > self.press(event)
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
------------------------------------------------------------------------------
>> >
>> >
>> > _______________________________________________
>> > Matplotlib-users mailing list
>> > matplotlib-us...@lists.sourceforge.net
<mailto:matplotlib-us...@lists.sourceforge.net>
>> >
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>> >
>> >
>>
>>
>>
------------------------------------------------------------------------------
>>
>> _______________________________________________
>> Matplotlib-users mailing list
>> matplotlib-us...@lists.sourceforge.net
<mailto:matplotlib-us...@lists.sourceforge.net>
>>
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
>
------------------------------------------------------------------------------
>
>
> _______________________________________________
> Matplotlib-devel mailing list
> Matplotlib-devel@lists.sourceforge.net
<mailto:Matplotlib-devel@lists.sourceforge.net>
>
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>
>
------------------------------------------------------------------------------
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
<mailto:Matplotlib-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel