On Sat, 2010-07-03 at 09:13 -0500, Benjamin Root wrote:
> Do we want to add a note to the CHANGELOG for this?

I did.

Eric

> 
> Ben Root
> 
> On Wed, Jun 30, 2010 at 4:43 PM, Eric Firing <efir...@hawaii.edu>
> wrote:
>         
>         On Wed, 2010-06-30 at 23:08 +0200, Peter Butterworth wrote:
>         > On Wed, Jun 30, 2010 at 3:42 AM, Eric Firing
>         <efir...@hawaii.edu> wrote:
>         > > On Tue, 2010-06-29 at 16:01 -0700, butterw wrote:
>         > >> My understanding is that the proposed change will break
>         at least some
>         > >> existing code, hence my proposal to go the safer route.
>         > >
>         > > On what is that understanding based?  Any actual examples
>         or use cases?
>         > >
>         > > I think the only such cases would be interactive scripts.
>          One can
>         > > imagine a script in which a plot is made, the user views
>         it, perhaps
>         > > uses a gui to change the limits, then presses a button to
>         plot the next
>         > > data set on top of the first, expecting that it will again
>         autoscale,
>         > > and so forth.  Maybe this is sufficient justification for
>         leaving the
>         > > present version alone.  That is what I am trying to find
>         out.  In
>         > > addition, the change would require scanning the internal
>         mpl code to see
>         > > whether there are uses of set_xlim that would have to be
>         changed.
>         >
>         > The points you make are exactly what I was thinking about.
>         > A subtle alteration of the behaviour of matplotlib caused by
>         the
>         > change is the worse case scenario, because it might not be
>         > straightforward to detect/correct.
>         > I also have a number of matplotlib interactive scripts /GUIs
>         used in
>         > production. Most rely on precise control of the viewing area
>         and some
>         > will be affected by the change.
>         >
>         > >
>         > >>
>         > >> Also I'm unconvinced by the justification for the
>         change :
>         > >> xlim and autoscalex_on are independant attributes, why
>         then should setting
>         > >
>         > > They are not independent, they are potentially in
>         conflict--two
>         > > mechanisms fighting for control of the axis.
>         > >
>         > >> xlim have the side effect of turning autoscalex off ?
>         This is not consistent
>         > >> with how the API works. If I really wanted autoscalex
>         off, I would have
>         > >> specified it.
>         > >
>         > > The idea of having interactive plotting commands is to
>         make the
>         > > interaction easy and natural.  When you call set_xlim
>         interactively, it
>         > > is because that is what you want the limits to be.  At
>         least that point
>         > > of view has been expressed several times on the lists.  I
>         have yet to
>         > > hear someone say, "I rely on the present behavior".  In
>         scripts, when
>         > > there is no interactive scenario such as I described in
>         the previous
>         > > paragraph, the problem with the present behavior is that
>         it means
>         > > set_xlim has no effect at all if followed by a plot
>         command unless one
>         > > has disabled autoscaling either via a kwarg in the plot
>         command, or via
>         > > ax.set_autoscalex_on(False).  The latter is just plain
>         ugly, to my eye.
>         >
>         > My personal opinion is that the current behaviour is not
>         broken.
>         > When typing commands interactively in pylab or writing a
>         regular
>         > script it can be frustrating. But in interactive GUIs it is
>         useful to
>         > have full independent control over the two parameters.
>         > In most cases I agree that the proposed behaviour is what
>         the user
>         > wants. But this is not true in all cases.
>         >
>         > >> To sum things up:
>         > >> Adding an argument to set_xlim to allow autoscale to be
>         turned off in the
>         > >> same step would be a good idea. But it shouldn't suddenly
>         become the default
>         > >> behaviour.
>         > >
>         > > You may well be right about this.  In any case, I suspect
>         no change will
>         > > occur prior to the 1.0 release.
>         > >
>         > > Additional perspective: the behavior of Matlab's xlim is
>         as I have
>         > > proposed, not as mpl xlim presently works.  I don't
>         believe in following
>         > > Matlab slavishly--sometimes we can make better choices
>         than Matlab
>         > > has--but I think that this is a case where Matlab got it
>         right and we
>         > > did not, the first time around.  This may be because the
>         _autoscalex and
>         > > _autoscaley attributes were added to the mpl Axes long
>         after set_xlim.
>         >
>         > As the change of default behaviour seems to be going ahead,
>         I must
>         > request the addition of an new argument to xlim
>         (autoscalex=False).
>         > The purpose being to allow the user to modify his code to
>         retain the
>         > current behaviour when desired.
>         
>         
>         I made two commits, 8479 and 8480.  Other developers are
>         welcome to
>         revert them or modify them as needed.  Certainly they need
>         testing and
>         review, the more, the better.  I had to change quite a few
>         things, so
>         there is risk, as you note.  I am a bit concerned about
>         whether enough
>         people will be able to do enough testing of this before
>         release to shake
>         out any bugs.
>         
>         The new kwarg for set_xlim and set_ylim is simply "auto"; set
>         it to None
>         to obtain the old behavior:
>         
>                  *auto*: [ True | False | None ]
>                    turn *x* autoscaling on (True), off (False;
>         default),
>                    or leave unchanged (None)
>         
>         set_xbound retains the old behavior, by calling set_xlim with
>         auto=None.
>         
>         We have several options at present.  If the changes I made are
>         junk,
>         they can be discarded, or deferred until more time is
>         available for
>         testing and reworking.  If they are basically sound but too
>         abrupt, then
>         the default could be changed to auto=None, with the
>         possibility of
>         shifting it later.  Additionally, an rcparam could be used,
>         although I
>         don't like making ever more rcparams.
>         
>         In addition to the changes to set_xlim, I tried to clarify the
>         documentation, and I added an "autoscale" convenience method
>         and pyplot
>         function, which I think was needed.
>         
>         One more change I would like to see is the simple and, I
>         think, safe one
>         of supporting descriptive kwarg names alongside the present
>         misleading
>         ones: e.g. for xlim, "left" would be equivalent to "xmin",
>         etc.
>         
>         
>         I am on a ship until July 5, working with a high-latency
>         internet
>         connection through an intermediate machine, and I can't afford
>         much more
>         time on this while I am out here. (And working with svn from
>         here is
>         pretty cumbersome.)
>         
>         Eric
>         
>         
>         
>         
>         
> ------------------------------------------------------------------------------
>         This SF.net email is sponsored by Sprint
>         What will you do first with EVO, the first 4G phone?
>         Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>         _______________________________________________
>         Matplotlib-devel mailing list
>         Matplotlib-devel@lists.sourceforge.net
>         https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>         
> 
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________ Matplotlib-devel mailing list 
> Matplotlib-devel@lists.sourceforge.net 
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel



------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to