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.

------------------------------------------------------------------------------
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