* Superscripts and subscripts capability
* -drawdump and -drawdumpa command line options
* New proc processdata actions
* A new SVG mouseover/javascript scheme
* Spaces and commas in data field names
Version 2.21 - Released 12 May '04
A new option for producing dynamic web-based graphs - QUISP (quick
server pages). One nice thing you can do with this is create a CGI
form along with the graph, so users can control various graph
parameters... here's a live demo example of this.
Major changes since 2.20 are lengthy and can be found at:
http://ploticus.sourceforge.net/doc/news_old.html
Major changes since 2.04:
- New libploticus C API.
- Vector plots.
- Unicode/big5 support (via GD and freetype).
- Disk resource limits lifted.
- CGI-mode fixes.
- Script interpreter overflow fixes.
- Other misc changes and bug fixes.
Provided by Grant Beattie <grant@netbsd.org> in private mail.
New features include:
* client-side imagemaps
* Changed: #proc endproc may now be written #endproc. The old syntax
will also continue to work.
* New feature - proc areadef categories - new modifier selectrows
which allows categories to be taken from data field based on a
conditional expression.
* New attribute - proc processdata - outfile allows result to be
written to a file. This came up because a user wanted to perform
arithmetic (a la getdata filter) to processdata result, and there
was no way to do it.
* New feature - proc annotate can now do drop shadows, beveling, and
colored backing box with or without outline.
* New attribute - proc getdata - pf_fieldnames for defining
post-filter fieldnames.
* New attribute - config and proc settings - numberspacerthreshold
controls when thousands separator characters begin to appear.
* New system variable - CM_UNITS - indicates if working in -cm mode
or not.
* HTML server-side imagemap support has been added.
* The data parsing code has been rewritten, and now allows situations
that weren't allowed before.
* new attribute - proc getdata - nfields - Controls the expected
number of fields per record.
* new attribute - proc getdata - fieldnamerows - like fieldnames but
allows data field names to be given one per line.
* new attribute - proc lineplot - gapmissing - allows missing data
points to cause a gap in the curve. Similar parameter added to lines
and chron prefabs.
* new attribute - proc scatterplot - clustermethod - control how
duplicate points will be clustered.
* new attribute - proc scatterplot - symfield and symrangefield -
allows symbol shape, color, etc. to be controlled by a data field.
* new attribute - proc scatterplot - dupsleg allows symbol shape,
color, etc. to be controlled by degree of duplicity
* prefabs - added rectangle as a standard parameter. It controls
plotting area size (and location, if rendering in paginated
postscript).
* some new functions, including $numgroup() and $dategroup() which are
useful in grouping a set of numbers or dates into bins.
* SVG capabilities. The driver was written by Bill Traill.
* postscript - ISO Latin1 encoding added, so that European
characters may be produced in postscript exactly like they are in
the other environments (ascii 128-255).
* Created graphic files are automatically chmod'ed to mode 644.
* Prefabs
* CGI mode
* A new script interpreter. New flow of control operators including:
#elseif #else #for #while #setifnotgiven #call #write #shell, etc.
Also, increased capacities for data fields and variables (250
chars) and script input lines (3000). The new interpreter involves
some script syntax changes that may cause existing scripts to
break in some cases.
* #sql, a new directive for retrieving data directly from an SQL
database. This is currently under development, and
user-contributed client interfaces to DBMSs such as MySQL and
Oracle would be welcome (the code is in dbinterface.c)
* Added: proc areadef autorange - new subattributes selectrows (for
selecting rows to be considered when scanning for min and max) and
combomode (to allow correct finding of min and max for situations
like error bars and stacked bars).
* Added: proc areadef autorange - now sets variables DATAXMIN,
DATAXMAX, DATAYMIN, and DATAYMAX - the actual minima and maxima of
data field.
* Added: proc axis - stubevery attribute
* Added: proc getdata - pathname attribute, to specify data file
name directly without involving cat(1)
* Added: proc bars - colorfield attribute - set bar color based on a
data field
* Added: proc legendentry - tag attribute
* Added: various new functions
* Added: the temp file default path name and default slash character
can now be changed in pl.h or in a config file.
* Added: resource utilization (cpu time and size of created disk
files) now can be controlled. Default upper limits are 10 cpu
seconds and 5,000,000 bytes. Limits may be altered in pl.h or by
using a config file
* Added: various other config file settings
Notable changes are:
* Fixed bug: proc axis - when producing stubs running from negative
to positive, zero is displayed as a very tiny non-zero
value such as 5.2579e-17 due to rounding error.
* Fixed bug: proc getdata - buffer overflow when 'filter' is used
with data records longer than 254 chars, causing garbage
result or instability.
Version 1.41 as of 18 June '01:
* Ploticus now covered under GPL.
* Fixed bug: colored background not completely filling the result window
when scale is being done
* Fixed scripts in test suite: The change in default size (version 1.40)
sometimes caused general layout problems with graphics that were layed
out with an 8.5" x 11" default size in mind. The solution for these
scripts is to add a #proc page and specify pagesize: 8.5 11. Some of
the scripts in the test suite had such problems and are now fixed.
* Fixed bug: EPS bounding box incorrect for 1) pltab output and 2) pl
where result draws into negative absolute coordinate space.
* Fixed bug: proc areadef xautorange/yautorange not working correctly in
some cases when a nearest= value is specified. This bug was
apparently introduced in 1.40.
* Fixed bug: proc lineplot - accum option choking when non-numeric data
encountered.
* Fixed bug: proc rangebar - negative barloc values not working.
* Added: proc areadef - autorange datafield may now be a comma-delimited
list of dfields so that multiple data fields are considered
when determining the axis min and max.
* Changed: scaletypes - times hh:mm:ss and mm:ss - validity checking
relaxed slightly to allow degenerate values such as 0:4:9
* Fixed bug: pltab - incorrect interaction between #font and
sectionheadings
* Fixed bug: proc rangebar - textdetails controls N= label but not
missing label
* Fixed bug: pltab - creates 8.5 x 11 inch gif, png regardless of result
size
* Fixed bug: axis - line grid and gridblock starting point incorrect in X
* Fixed bug: axis - colors incorrect when specified in certain
combinations for tics, stubs, grid
* Fixed bug: bars - ticks not being drawn when truncating was not
switched on
Version 1.40 as of 16 Jan '01:
* proc getdata - variables may be declared and set from within data files
using #set
* proc curvefit - linear regression and correlation
* proc areadef - "autowidth" and "autoheight" attributes for data-driven
plot area size
* proc axis - alternating shaded block backgrounds
* added: new script $functions - $exists() and $notexists() to test if a
@VARIABLE has a value. See functions(pl)
added: new script #operators - #hideund and #showund to control
display of embedded underscores, and #includesh. See scripts(pl)
* added: new scaletype - log+1 scaling for handling log-characeristic
data that may contain values of 0.0
* added: proc areadef - autorange - "incmult", which assists in
automatically determining hi and low margin
* added: proc areadef - "xextracategory" and "yextracategory" attributes,
which allow categories to be added explicitly even when most
categories are defined from data
* added: proc axis - "stubcull" attribute for eliminating stub collision,
or pile up on log axis
* added: proc axis - definable extent for grid lines
* added: cmyk color specification for use with PostScript and EPS.
* added: textdetails - "font" subattribute for setting PostScript font.
* added: proc print - "outfile" and "outmode" attributes allowing proc
print to write to files
* added: proc print - now sets a variable called NSELECTED.
* added: proc legend - "reset" attribute.
* added: proc bars - "hidezerobars" attribute
* added: proc curvefit - "select" attribute
* added: proc curvefit - new curvetype - "avg"
* added: proc tabulate - "showrange" attribute supercedes
showrangelowonly. Range label can be the average of low and
high end of range.
* added: proc rangebar - "logmean" attribute, for computing means and
standard deviations in log space.
* added: proc rangebar - "statsonly" attribute, to compute stats and set
variables without drawing the bar.
added: proc rangebar - now sets the variables RANGEBARIQRMIN and
RANGEBARIQRMAX.
* changed: proc getdata - pl no longer quits when no data could be read.
Scripts can check @NRECORDS after getdata finishes and take
appropriate action.
* changed: default result size is now 8" x 8".
* changed: proc curvefit - data no longer need to be ordered on X for
curve computation
* changed: standalone $functions (those that are not part of an #if
construct) may contain embedded white space
* changed: color specifications - the separator character in rgb(r,g,b)
constructs may be any of comma, dash, colon, or pipe. Comma
was problematic if rgb constructs were put into a comma-
delimited list, as in students example.
* changed: .pls is now a "known extension" for script files.
* changed: improved the heuristic for automatic axis increment
determination
* fixed bug: proc scatterplot - if select condition used or if values are
out-of-range, labels from data and datapoint size from data
may be incorrect due to data alignment bug.
* fixed bug: proc lineplot - if select condition used or if values are
out-of-range, labels from data may be incorrect due to data
alignment bug.
* fixed bug: proc rangebar - file close problem causing core dump on
linux
* fixed bug: multipage plots & page breaks - if proc page was used to
break to page 2, and proc page wasn't used for page 1,
drawing continues on page 1.
* fixed bug: proc getdata - select was not working when field names used
(message: no such data field).
* fixed bug: date scaling - dates containing embedded dashes were not
converted properly when used. as locvalue e.g. proc
annotate location.
* fixed bug: $max() function was giving incorrect results
* fixed bug: proc page - on multipage landscape plots using PNG/GIF only
the last page was viewable.
* fixed bug: PNG/GIF driver memory leak when doing multipage plots.
fixed bug: incorrect fda() calls in tabulate.c and
processdata.c.
* fixed bug: proc getdata filters - potential instability if references
were made to data fields beyond NFIELDS.
* fixed bug: proc bars - tics produced through the use of leftticfield,
rightticfield, and midticfield were being drawn outside of
plotting area