|
From: Mark B. <ma...@gm...> - 2007-01-04 08:52:42
|
Eric -
Yeah, I agree. The words 'equal' is confusing. But it was taken from matlab.
'scaled' was my invention/doing. I thought it was better than 'equal', as it
makes the scales equal on both axes. Either way, I would like it if we can
fix the data limits in a simple way, and I think incorporating it in
'scaled' would be one option. A new option would be a good idea too.
Something like 'scaledfixed' ? Maybe too long. Or just 'scaledf' ? Code is
simple:
elif s == 'scaledf':
self.set_aspect('equal', adjustable='box', anchor='C')
self.set_autoscale_on(False)
Thanks,
Mark
On 1/3/07, Eric Firing <ef...@ha...> wrote:
>
> Mark Bakker wrote:
> > The enhanced way of handling aspect ratios that Eric implemented works
> > great.
> > There is, however, one change from the old implementation that I don't
> like.
> >
> > In the old implementation, when setting axis('scaled') it also turned
> > autoscale off.
> > This makes sense (and I used it a lot). It means that you can set the
> > axis('scaled'), which means the aspect ratios are set equal and the axis
> > limits are not changed, at any point when you like the data limits. The
> > axis limits are then fixed so that every time you add something else to
> > the figure it will keep these limits.
> >
> > In the new implementation (ok, it has been there for a little while
> > now), you have to give a separate set_autoscale_on(False) command.
> > Besides the odd name of the function (you actually turn the autoscale
> > off), it is a command that should be set right away by axis('scaled').
> > If you want the autoscale to remain on, you should use axis('equal')
>
> Here is the present code fragment (slightly mangled by the mailer):
>
> elif s in ('equal', 'tight', 'scaled', 'normal', 'auto',
> 'image'):
> self.set_autoscale_on(True)
> self.set_aspect('auto')
> self.autoscale_view()
> self.apply_aspect()
> if s=='equal':
> self.set_aspect('equal', adjustable='datalim')
> elif s == 'scaled':
> self.set_aspect('equal', adjustable='box',
> anchor='C')
> elif s=='tight':
> self.autoscale_view(tight=True)
> self.set_autoscale_on(False)
> elif s == 'image':
> self.autoscale_view(tight=True)
> self.set_autoscale_on(False)
> self.set_aspect('equal', adjustable='box',
> anchor='C')
>
> At present, the difference between "equal" and "scaled" is not the
> autoscale state but the "adjustable".
>
> I don't have any objection to changing the behavior of "scaled" as you
> suggest, if that is what people want. Alternatively, yet another word
> could be used to define the behavior you want, and that behavior could
> be added. I don't find "scaled" or "equal" very descriptive or
> intuitive; nor do I find that either word suggests how autoscale should
> be set. (And I agree, "set_autoscale_on(False)" is ugly.)
>
> Eric
>
|