|
From: Ethan M. <merritt@u.washington.edu> - 2012-09-08 20:42:33
|
On Saturday, 08 September 2012, Daniel J Sebald wrote:
> I see there is new behavior for the option "reverse" for gnuplot version
> 4.7+. It seems to me the change is that "{no}reverse" now only applies
> to autoscaling. (In fact, the documentation ostensibly says that.)
>
> Could someone write a one or two sentence summary of why the change.
> E.g., the previous behavior was too confusing or caused a conflict? I
> just want to be able to explain why the change if asked.
The old behaviour was bizarre. Example:
gnuplot> set xrange [1:0]
gnuplot> show xrange
set xrange [ 0.00000 : 1.00000 ] reverse nowriteback
gnuplot> set xrange [0:1]
gnuplot> show xrange
set xrange [ 0.00000 : 1.00000 ] reverse nowriteback
Notice that the "reverse" property is now stuck, and no ordinary
sequence of autoscaling/autorange/set xrange commands will unstick it.
Only an explicit "set xr [<something>:<something>] noreverse"
will work, but inside a script you can't know in advance when this
might be necessary, and at that point you may not know what the
correct <something> is anyhow.
See also various old bug reports going back 10 years or so, e.g. #230686.
>
> Reverse axes aren't used real often, except in the case of y-axis and
> images where it is quite common to see the origin in the upper left
> corner of a plot. (Octave will need a change to address this.)
You have neglected that case of inverted axis scaling x2 = F(1/x1)
Consider, for example:
http://skuld.bmsc.washington.edu/people/merritt/gnuplot/linkedaxes/
> I also want to confirm that the new behavior is really what is desired.
> If there is something that may have been wrong with the previous
> behavior it is that the old syntax was too flexible. I think it was
> Ethan that pointed out controlling the axis from within the plot command
> itself was problematic, e.g.,
>
> plot [0:500] x
Yeah, that too. If the "reverse" flag got stuck on, the in-line
range specifiers didn't work reliably.
Ethan
> I see the point in the sense that multiple items with different range
> settings can be a conflict. Maybe we shouldn't think of the range
> specified within the plot command as "axis range".
>
> Perhaps it is the fact that range setting itself can control the
> orientation of an axes, i.e., [500:0]. If that were disallowed, then
> there would still be an ability to control range within the plot
> command, but not be able to control the orientation of the axis.
>
> So rather than the change "reverse only applies to autoscaling", another
> change could have been "range limits no longer control orientation". So
> that would mean
>
> set xrange [0:500]
> set xrange [500:0]
> plot [0:500]
> plot [500:0]
>
> all mean the same thing, i.e., the xaxis range is from 0 to 500 using
> the typical Cartesian orientation. Also
>
> set xrange [0:500] reverse
> set xrange [500:0] reverse
> set xrange reverse
> plot [0:500]
> set xrange reverse
> plot [500:0]
>
> would all mean the same thing, i.e., the xaxis range is from 0 to 500
> but using the reverse orientation.
>
> Dan
>
|