Hi all, I updated to version 99.1.1 and I'm still getting the error

"ValueError: argument must be "box", or "datalim" at set_adjustable..."

from axes.py

when I try to do ax.set_adjustable("box-forced") as you suggested.

-Adam



On Thu, May 27, 2010 at 3:08 PM, Adam Fraser <adam.n.fra...@gmail.com>wrote:

> Thanks very much,
>
> I'm getting ValueError: argument must be "box", or "datalim" at
> set_adjustable...
>
> I'm using Matplotlib version 0.98.5.3, do I need to update?
>
>
> On Thu, May 27, 2010 at 2:59 PM, Jae-Joon Lee <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> 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]
>> > 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-users@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>> >
>> >
>>
>
>
------------------------------------------------------------------------------

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to