New gnuplot subsystem "watchpoints"

Ethan A Merritt <[email protected]> Tue, 06 Sep 2022 00:01:28 -0700
Newsgroups gmane.comp.graphics.gnuplot.devel
Organization University of Washington
Message-ID <4960022.atdPhlSkOF@stonelion>
This is a project I started a couple of years ago.
I think it is now ready for general testing and use, so I have
added it to the development branch with a configuration option

    configure --enable-watchpoints

The "help" text is below:

 Syntax:
       plot FOO watch {x|y|z|F(x,y)} = <value>
       plot FOO watch mouse

       set style watchpoints nolabels
       set style watchpoints label <label-properties>

       unset style watchpoints      # return to default style

       show watchpoints    # summarizes all watches from previous plot command

 A watchpoint is a target value for the x, y, or z coordinate or for a function
 f(x,y).  Each watchpoint is attached to a single plot within a `plot` command.
 Watchpoints are tracked only for styles `with lines` and `with linespoints`.
 Every component line segment of that plot is checked against all watchpoints
 attached the plot to see whether one or more of the watchpoint targets is
 satisfied at a point along that line segment. A list of points that satisfy the
 the target condition ("hits") is accumulated as the plot is drawn.

 For example, if there is a watchpoint with a target y=100, each line segment
 is checked to see if the y coordinates of the two endpoints bracket the target
 y value.  If so then some point [x,y] on the line segment satisfies the target
 condition y = 100 exactly.  This target point is then found by linear
 interpolation or by iterative bisection.

 Watchpoints within a single plot command are numbered successively.
 More than one watchpoint per plot component may be specified.
 Example:
      plot DATA using 1:2 smooth cnormal watch y=0.25 watch y=0.5 watch y=0.75

 Watchpoint hits for each targets in the previous plot command are stored in
 named arrays WATCH_n.  You can also display a summary of all watchpoint hits
 from the previous plot command;  see `show watchpoints`.

      gnuplot> show watchpoints
      Plot title:     "DATA using 1:2 smooth cnormal"
        Watch 1 target y = 0.25         (1 hits)
                hit 1   x 49.7  y 0.25
        Watch 2 target y = 0.5          (1 hits)
                hit 1   x 63.1  y 0.5
        Watch 3 target y = 0.75         (1 hits)
                hit 1   x 67.8  y 0.75

 Smoothing: Line segments are checked as they are drawn.  For unsmoothed data
 plots this means a hit found by interpolation will lie exactly on a line
 segment connecting two data points.  If a data plot is smoothed, hits will
 lie on a line segment from the smoothed curve.  Depending on the quality
 of the smoothed fit, this may or may not be more accurate than the hit from
 the unsmoothed data.

 Accuracy: If the line segment was generated from a function plot, the exact
 value of x such that f(x) = y is found by iterative bisection.
 Otherwise the coordinates [x,y] are approximated by linear interpolation
 along the line segment.

 Using the current mouse x coordinate as a watch target generates a label
 that moves along the line of the plot tracking the horizontal position of
 the mouse.  This allows simultaneous readout of the y values of multiple
 plot lines in the same graph.  The appearance of the point indicating the
 current position and of the label can be modified by `set style watchpoint`
 and `set style textbox`

 Example:

      set style watchpoint labels point pt 6 ps 2 boxstyle 1
      set style textbox 1 lw 0.5 opaque
      plot for [i=1:N] "file.dat" using 1:(column(i)) watch mouse






_______________________________________________
gnuplot-beta mailing list
[email protected]
Membership management via: https://lists.sourceforge.net/lists/listinfo/gnuplot-beta