|
From: sfeam (E. Merritt) <eam...@gm...> - 2012-09-11 03:33:51
|
On Monday, 10 September 2012, Hans-Bernhard Bröker wrote:
> On 11.09.2012 00:34, Ethan A Merritt wrote:
>
> > You do know that the [*:*] part of that command is entirely ignored?
> > As I said, autoscaling only applies to data plots, not function plots.
>
> For the independent axes of a function plot, yes. Not so much for the
> dependent ones (y in a plot, z in an splot, all of them in a parametric
> one).
Yes, of course. So far the discussion has concerned the x-axis
range in a 2D function plot (not polar, not parametric).
The same issue arises for both x- and y- axes in a 3D plot, with the
additional complication that in the past "set/unset view map"
implicitly toggled their internal flag AXIS_REVERSE, thus making its
eventual state even less understandable.
> > I don't see it that way. To me it seems very intuitive.
> > [30:50] means start at 30 and go to 50.
> > [50:30] means start at 50 and go to 30.
> > The word "reverse" is never needed when you are specifying explicit limits.
>
> But what about the cases where only half the limits are explicit?
>
> set yrange [30:*] reverse
>
> has been meaningful for quite a while now. Changing that should require
> a pretty good reason.
I may be missing a scenario, but so far as I know that command has
exactly same effect in the current 4.7 as it had in earlier versions.
It is an example of autoscaling.
> > The `reverse` keyword was added sometime between versions 3.5 and 3.7
> > Its documentation has always said
> > `reverse` is intended primarily for use with `autoscale`
>
> But that doesn't mean it should have no effect otherwise.
Since the historical behavior has been strange, to say the least,
I think we are free establish more reasonable behavior starting
with the eventual release 5.0. It is my position that the "reverse"
keyword should explicitly affect only autoscaling, even though the
documentation has in the past only said this is "intended" rather
than "guaranteed".
> > Dan, you are again showing tests with function plots.
> > I keep pointing out that the x-axis autoscaling commands, including the
> > * character in a "set xrange" command _do not apply_ to the samples generated
> > for functions.
>
> Which is only half true.
>
> It's true that auto-scaling an independent variable for a _pure_
> function plot makes no sense --- which is why gnuplot always replaced it
> by a default range. But as soon as x becomes a dependent variable
> (parametric mode, polar mode), or data files enter the picture,
> auto-scaling x becomes well-defined and worth having.
Sure. No one is disputing that.
The specific issues that I take from this discussion are
1) How to fix the long-standing problem that the 'reverse' flag
is set implicitly but can only be cleared explicitly, leading
to context-dependent output from explict range commands?
My solution is to ignore the reverse flag whenever foo and baz are
both given, applying it only if the axis limits are chosen by
autoscaling. That removes the context-dependence and is
consistent with the previous "intended" use.
2) The plot produced by
plot [30:40<*] x
is very strange. Bug? Unreasonable command?
In any case the issue has been present since the introduction of
conditional range limits by Volker Dobler's patch 2 years ago.
It's not related to "reverse".
3) The empty range plot produced by
plot [10:*] x
is unexpected, although understandable if you remember that the
implicit upper axis limit is 10 by default.
Bug? Unreasonable command? Should it do something else entirely?
Again this is not directly related to "reverse".
4) Dan provided a test case that resulted in a blank entry in the
"currently" field of "show range". I haven't looked into that
one yet, but it appears to be a bug in the "show" command
rather than a real problem with the plot or autoscaling.
|