|
From: Ethan A M. <me...@uw...> - 2023-11-15 03:53:42
|
The "testing" directory on SourceForge now has a tarball for gnuplot-6-0-rc3 https://sourceforge.net/projects/gnuplot/files/gnuplot/testing/gnuplot-6.0.rc3.tar.gz This is a third release candidate for version 6.0. Your feedback from testing of this release candidate will contribute to the success of a full 6.0 release by the end of the year. The most visible addition since rc2 is preliminary support for redrawing or mousing complete multiplots. The mousing part still has a lot of rough edges so it is off by default but can be enabled by set mouse multiplot The redraw previous multiplot part works well. If gnuplot knows that the immediately previous plot command was part of a multiplot, then "replot" will redraw the full mulitplot. If some other plot has intervened, then the previous multiplot can still be recreated by "remultiplot". Release Notes date: 13-Nov-2023 Changes between 6.0-rc2 and -rc3 ================================ - Replotting and mousing multiplots o new commands "remultiplot", "set mouse multiplot" o command sequence to regenerate full multiplot is saved to a datablock - Additional keyentry options to construct custom keys o keyentry "text" can be used to place a secondary title in the key - Minor fixes o correct build of postscript terminal when libgd and cairo are not present o strip trailing CR from function blocks read from a dos file o use 64-bit integers for iteration o "unset pointintervalbox" disables the box rather than setting it to default size o setting minitic scale to 0 does not disable the corresponding grid lines o use of stacked histograms with variable number of data columns Features introduced in version 6 ================================ For a detailed list of new features, with illustrations, see http://gnuplot.info/docs_6.0/NewFeatures.html For more example plots see http://gnuplot.info/demo_6.0/ - Function blocks and scoped variables - Larger collection of special and complex-valued functions - New plot styles o 2D plot style `with surface` works in 2D polar coordinates to produce a solid-fill gridded representation of the plane. This is analogous to the use of dgrid3d and pm3d to produce a 3D gridded surface. o 2D plot style `with sectors` renders one annular segment ("sector") for each line of input data. This style can generate pie and donut charts, windrose charts, and a polar equivalent to sparse-matrix heatmaps. o 2D plot style `with lines` now has a filter option `sharpen`. This filter detects spikes in a function plot that would be missed or under-represented due to coarse sampling. It adds an additional sampling point at the location of each such peak. o 3D plot style `with contourfill` produces 2D or 3D surfaces with distinct z-ranges indicated by solid color fill. - Hulls, masks, and smoothing o A cluster of 2D points can be replaced by a bounding polygon ("hull"). Both convex hulls and concave hulls (χ-shapes) are supported. o Any hull or other closed path can be used as a mask to display only selected regions of a pm3d surface or image plot. o New smoothing option "smooth path" can be used on 2D and 3D curves that are not monotonic on x or y. This allows smoothing of hulls. - Named palettes o The current palette can be saved to a named colormap for future us. o A predefined palette named "viridis" is provided. o Plots can specify a previously saved palette by name. This permits the use of multiple palettes in a single plot command. o Named palettes can be edited to contain an alpha channel. - New built-in functions and array operations o palette(z) returns the current RGB palette color mapping for z. o rgbcolor("name") returns the 32bit ARGB value for a named color. o index(Array, element) returns the first index i for which Array[i] is equal to element. o split("string", "separator") unpacks the fields in a string into an array of strings. o join(array, "separator") is the complement to split(). It concatenates the elements of a string array into a single string. o `stats <non-existent file>` yields a testable value with no error; useful to avoid errors or warnings in scripts. - Program control flow o New syntax if {...} else if {...} else {...} o XDG base directory conventions for configuration files are supported. o `unset warnings` suppresses output of warning messages to the console. o The `fit` command is protected by exception handling. Control always returns to the next line of input even in the case of fit errors. On return FIT_ERROR is non-zero if an error occurred. o "Watchpoints" are target values associated with individual plots in a graph. As that plot is drawn, each component line segment is monitored to see if its endpoints bracket the target value of a watchpoint coordinate (x, y, or z) or function f(x,y). If a match is found, the [x,y] coordinates of the match point are saved for later use. Possible uses include - find the intersection points of two curves - find zeros of a function - find and notate where a dependent variable or function f(x,y) crosses a threshold value - use the mouse to track values along multiple plots simultaneously - New terminals and terminal options o Terminals that display graphics in the same window as text entry now support pseudo-mousing; i.e. they respond to arrow keys and other hot-key bindings during "pause mouse". o New terminals kittygd and kittycairo provide in-window graphics for terminal emulators that support the kitty protocol. o New terminal webp generates a single frame or an animation sequence using webp encoding. Frames are generated using pngcairo, then encoded through the WebPAnimEncoder API. o New terminal block for text-mode pseudo-graphics uses Unicode block or Braille characters to offer improved resolution compared to the dumb or caca terminals. o latex terminals standalone mode updated to work with texlive2023 - Miscellaneous other new features o Time unit settings for major and minor axis tics. For example, minor tic marks can be placed at exactly one month intervals. o The character sequence $# in a using specifier evaluates to the total number of columns available in the current line of data. "plot FOO using 0:(column($# - 1))" plots the last-but-one field of each row. o keyword binvalue=avg plots the average, rather than the sum, of binned data. o "set colorbox bottom" places the color box underneath the plot. o "set pm3d spotlight" adds a user-controlled spotlight to the lighting model. o New key layout options to force specific width or number of columns. Automatic positioning of the key on the page can be manually tweaked by giving an offset. o "set isotropic" adjusts the axis scaling in both 2D and 3D plots such that x, y, and z axes all have the same scale. o Text rotation angles are not limited to integral degree values. o Data-driven color assignments in plot style "histograms". happy gnuplotting, Ethan |
|
From: Dima K. <gn...@di...> - 2023-11-15 22:01:38
|
Hi Ethan. Thanks for pushing this out. I'm trying the 6.0-rc3 tag from
git.
A question below.
Ethan A Merritt <me...@uw...> writes:
> - Replotting and mousing multiplots
> o new commands "remultiplot", "set mouse multiplot"
> o command sequence to regenerate full multiplot is saved to a datablock
Can you talk a bit more about this? I wrote a simple script (tst.gp):
set multiplot layout 2,1
plot x
plot x*x
I run "gnuplot" and "load tst.gp". I see the plots come up, as expected.
If I do a "replot" then I see the plots being redrawn, but without
clearing what's behind them, so you get an unusable image. remultiplot
does this:
multiplot> remultiplot
no datablock named $GPVAL_LAST_MULTIPLOT
I also tried to "set mouse multiplot", but that doesn't appear to do
anything different: I can still use the right button to try to zoom, but
it doesn't do anything. This is with the x11 and qt terminals.
I haven't checked if these are different from the behavior in previous
releases. It would be great, though, if you could resize a multiplot
window, and see all the plots be redrawn. Or if you could interactively
zoom in multiplots.
Thanks!
|
|
From: Ethan A M. <me...@uw...> - 2023-11-15 23:55:09
|
On Wednesday, 15 November 2023 13:56:28 PST Dima Kogan wrote: > !-------------------------------------------------------------------| > This Message Is From an Untrusted Sender > You have not previously corresponded with this sender. > See https://itconnect.uw.edu/email-tags for additional > information. Please contact the UW-IT Service Center, > he...@uw... 206.221.5000, for assistance. > |-------------------------------------------------------------------! > > Hi Ethan. Thanks for pushing this out. I'm trying the 6.0-rc3 tag from > git. > > A question below. > > > Ethan A Merritt <me...@uw...> writes: > > > - Replotting and mousing multiplots > > o new commands "remultiplot", "set mouse multiplot" > > o command sequence to regenerate full multiplot is saved to a datablock > > Can you talk a bit more about this? I wrote a simple script (tst.gp): > > set multiplot layout 2,1 > plot x > plot x*x > > I run "gnuplot" and "load tst.gp". I see the plots come up, as expected. > If I do a "replot" then I see the plots being redrawn, but without > clearing what's behind them, so you get an unusable image. Right. That's because you are still at the stage of creating the multiplot. That stage begins with the commands "set multiplot ..." and ends with the command "unset multiplot". The intervening commands are stored to a temporary buffer and then moved to $GPVAL_LAST_MULTIPLOT when the "unset multiplot" completes. At that point the entire sequence of commands is available to regenerate the original multiplot using the "remuptiplot" command. > remultiplot does this: > > multiplot> remultiplot > no datablock named $GPVAL_LAST_MULTIPLOT > > I also tried to "set mouse multiplot", but that doesn't appear to do > anything different: I can still use the right button to try to zoom, but > it doesn't do anything. This is with the x11 and qt terminals. Yeah, at this stage the support for "set mouse multiplot" is pretty rough. I am in the process of smoothing it out in the master branch and will merge the improved version back into 6.0 before the full release. What does work already in 6.0rc3 2D scroll/pan/zoom hot keys (replot toggle log-scale arrow keys ...) Works in master branch but not in -rc3 3D mouse rotations sanity check the commands inside $GPVAL_LAST_MULTIPLOT multiplots containing 'load' commands multiplots using function blocks Still not working but seems possible limit mouse coordinate readout to the single active plot in the multiplot Not going to happen any time soon mouse readout for the non-active plots as well (this what everyone has wanted since forever, but the "remultiplot" work isn't going to get there). > > I haven't checked if these are different from the behavior in previous > releases. It would be great, though, if you could resize a multiplot > window, and see all the plots be redrawn. Or if you could interactively > zoom in multiplots. That should work in rc3. Try the following test script #################################################### # demo script for multiplot mousing in 6.0.rc3 set mouse multiplot set multiplot layout 1,3 plotno = 0.0 do for [i=1:3] { plotno = real(i) plot sin(x/plotno)/plotno title sprintf("Plot #%g",plotno) } unset multiplot print "about to replot" remultiplot print "done, now you can pan/zoom/replot" #################################################### thanks for testing Ethan |
|
From: Dima K. <gn...@di...> - 2023-11-16 04:10:02
|
Ah yes. I don't multiplot very often, and clearly missed this important detail of its operation (that you need to "unset multiplot"). This new logic is great. Thank you very much for implementing that. Two notes: - Should we remultiplot when a window is resized? Currently we replot when it is resized, so the whole multiplot is replaced with one of the subplots. They all come back during a remultiplot, but that seems like an extra step. - Can/should we allow independent panning/zooming in each subplot? I imagine this would be a lot of work, but I don't know. Thank you very much. I'm now using the 6.0-rc3 tag for all my daily work, so hopefully I'll catch any regressions. |
|
From: Ethan A M. <me...@uw...> - 2023-11-16 04:54:12
|
On Wednesday, 15 November 2023 20:04:31 PST Dima Kogan wrote:
> Ah yes. I don't multiplot very often, and clearly missed this important
> detail of its operation (that you need to "unset multiplot").
>
> This new logic is great. Thank you very much for implementing that. Two
> notes:
>
> - Should we remultiplot when a window is resized? Currently we replot
> when it is resized, so the whole multiplot is replaced with one of the
> subplots. They all come back during a remultiplot, but that seems like
> an extra step.
After a resize, the terminal requests a replot. But if the most recent
previous plot command was part of a multiplot, the "replot" is supposedly
replaced by "remultiplot". That "most recent previous plot" test could fail
if you have done other things ("clear" "test palette" "set term" ...) since the
multiplot was displayed. If so, you can recover with an explicit
"remultiplot" from the command line.
There may well be other corner cases where the resize operation
fails to substitute "remultiplot" but for me it is working in -rc3 already.
If you have a reproducible example where it fails, please provide the details.
Maybe it's terminal-dependent? I think a volatile data source
(e.g. reading from '-') might also bypass the normal replot processing.
> - Can/should we allow independent panning/zooming in each subplot? I
> imagine this would be a lot of work, but I don't know.
That's a whole other can of worms. Nothing in the remultiplot code
makes it any easier than it was before to achieve this.
It would, however, be easy to provide a way to turn off pan/zoom
for individual plots. That way you could use the mouse to pan/zoom
the one active (most recent) plot in the multiplot and the others would
be redrawn in their original state. In some cases that would be better,
in other cases worse. It just depends on whether the plots share a
consistent set of axis ranges and region of interest.
> Thank you very much. I'm now using the 6.0-rc3 tag for all my daily
> work, so hopefully I'll catch any regressions.
Great. I am hoping that all regressions were caught in -rc1 and -rc2.
The multiplot stuff is new, so bug reports are welcome but I don't
think that counts as a regression.
Ethan
|
|
From: Dima K. <gn...@di...> - 2023-11-16 07:51:33
|
Ethan A Merritt <me...@uw...> writes:
> After a resize, the terminal requests a replot. But if the most recent
> previous plot command was part of a multiplot, the "replot" is
> supposedly replaced by "remultiplot". That "most recent previous plot"
> test could fail if you have done other things ("clear" "test palette"
> "set term" ...) since the multiplot was displayed. If so, you can
> recover with an explicit "remultiplot" from the command line.
OK. From what I see, this sequence works ONLY if "set mouse multiplot".
So if I do this:
set mouse multiplot
set multiplot layout 2,1
plot x
plot x*x
unset multiplot
Then I can resize the window, and the multiplot is resized with it. If I
don't "set mouse multiplot" then the plots are NOT resized.
|
|
From: ASSI <Str...@ne...> - 2023-11-17 20:04:13
|
Ethan A Merritt writes: > This is a third release candidate for version 6.0. > Your feedback from testing of this release candidate will contribute to > the success of a full 6.0 release by the end of the year. The build on Cygwin is successful. I could remove two of the patches that were previously required. I also found a workaround for the problem with the missing gpinsetfigure.tex when building the documentation: Prepend "no_figure" to the makefile targets, apparently the dependencies are not complete and make is not picking this requirement up automatically. Speaking of dependencies, I still cannot build the documentation in parallel mode, although that works for the actual compilation thankfully. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptation for Waldorf rackAttack V1.04R1: http://Synth.Stromeko.net/Downloads.html#WaldorfSDada |