## Release notes for earlier versions

Version 2.32

Manual page for Release_notes_for_earlier_versions(PL)

Current news and release notes

## Ploticus 2.31 - 5 Feb '05 - New features

- datematic - when working with date, datetime, or time data, datematic will automatically determine a reasonable default axis range, stub format, stub increment, and will enable `autoyears`, `automonths`, or `autodays` as appropriate. In proc axis this is used by specifying `stubs: datematic`. In proc areadef autorange, it is used by specifying `nearest=datematic`.
  Example:

        #proc areadef
          xautorange: datafield=1 nearest=datematic
          xaxis.stubs: datematic
          ...

- autorange - lots of new `nearest` options
- 64 bit Linux supported. Version 2.31 compiles and runs on AMD64. The source code now gives an (almost) clean -Wall compile .
- lineplot - new feature - `gapmissing: auto` detects omitted data points without requiring missing data codes be present.. heuristic is based on interval between 1st 2 data points.
- pl command line - new option `-noshell` disables all internal shell invocations, useful ie. when testing a script from a non-trusted source.
- proc axis - new features `stubs: minonly`, `stubs: maxonly`, and `stubs: minmaxonly` to render stubs only at the axis minima, maxima, or both.
- proc axis - new attribute - `arrow` for placing an arrowhead at the axis maxima.
- proc line - new attribute `anchor` allows drawing relative a figure relative to an anchor location (useful when drawing the same figure repeatedly in different locations).
- proc axis - new attribute `nolimit` that can be used to disable the axis drawing "circuit breaker" for those special cases where it is a hinderance.
- proc processdata - action:stats - can now produce one set of stats based one or several data fields (values all taken together).
- clickmap is now automatically disabled in direct cgi mode, since it's not applicable there.
- proc page - new attributes `map` and `csmap` - allow clickmap generation to be turned on from within a script instead of on the command line.
- win32 - when PNG/GIF/JPEG image output is written to stdout, stdout should now be set to the appropriate coding.
- proc rect - to get no fill color you can now say `color: none` (used to have to say just `color:` )

## 2.31 Bug fixes

- due to a Makefile problem (pl command only) no imagemap output was produced with -map or -csmap when producing gif, png, or jpeg. libploticus unaffected. More info here.
- dates - bug involving incorrect day-of-week computation. Plots that used `omitweekends` omitted the wrong days of the week.
- proc curvefit - wasn't discarding input data points where Y component was a non-numeric (eg. a missing data code).
- very long category names used as axis labels.. some long labels were being omitted on axis..
- autorange - big datafield list using fieldnames, was causing overflow
- arrow color sometimes incorrect - fixed
- in X mode, the yellow [End.] or [more..] button is not affected by `-scale`
- bounding box incorrect with vertical text when a `-scale` was set
- proc usedata - was giving error when current data set was the original data set; also made more lenient on the "original" name
- svg - "bad CSS property or descriptor declaration" error - fixed (?)
- font names w/ embedded spaces - these are parsed correctly everywhere (-font, proc page, proc settings, textdetails font=) but these are problematic with some drivers.. SWF definitely won't handle these. In a test, GD/Truetype doesn't seem to work with them either. Not sure about SVG.

## Ploticus version 2.30 - 30 Aug 2004

New features

- Superscripts and subscripts capability. This is a limited implementation that works with monospaced fonts such as the default GD fonts, default X11 fonts, or PostScript's /Courier. In scripts, to ensure backward compatibility, this capability must be turned on using proc settings `enable_suscripts` (or in your config file). Prefabs have superscript/subscript capability turned on by default. More info. Example.
- -drawdump and -drawdumpa command line options, which allow you to overlay or combine results from separate pl runs - this opens up new possibilties when using prefabs, among other things. The drawdump file can be rendered later in any desired format, using this command: `pl -prefab draw dumpfile=filename` or by using proc drawcommands. Drawdump capability is available in all builds.
- New proc processdata actions: `join` / `leftjoin` / `rightjoin`, which perform a join operation (useful for example when doing a scatterplot and you want the X component to come from certain records in the data set, and the Y component to come from other records); `stats`, which examines a field in the current data set and reports the min, max, mean, SD, N (etc.). It does this by setting ploticus variables, that can be displayed or used to position annotations.
- A new SVG mouseover/javascript scheme which gives better results and produces SVGs that support mouseover independently (without involving the containing HTML file). Thanks to Jamie Echlin. More info. Requires 2 javascript files available here.
- Spaces and commas in data field names - Data field names cannot contain literal spaces or commas, but it is now possible to encode spaces as _ and commas as |, for situations where the names will be displayed. This capability must be turned on using proc settings `encodenames` or in config file. Example.
- Various prefab-related features
- autorange - new attributes `mininit` and `maxinit` - similar to `lowfix` and `highfix` but are overridden by encountered data values that exceed them.
- proc pie - new attribute - `labelfmtstring` - a more flexible way of building labels from data field(s).
- proc pie - improvement - `labelmode: labelonly` - label positioning improved
- proc curvefit - new attribute - `clip` - allows the generated curve to be clipped to the plotting area
- proc curvefit - maxmimum number of points in the input data set is now dynamic; size is controlled by new attribute `maxinpoints`
- EPS files - the latin1 encoding that was added a year or two ago is now optional.. this can be controlled using proc settings `ps_latin1_encoding` attribute.. try this if you're having problems with ploticus EPS files in other applications.
- proc annotate - new attribute `clip`, which allows annotation to not influence the overall bounding box.. may be handy if far-out annotations are just as well ignored.
- color - new notation for specifying colors as hex values xrgb(xxxxxx) or xrgb(xxxxxxxxxxxx).
- new function - `$boundingbox()` - which allows bounding box tracking to be turned on or off.. turn off if you want to draw something that shouldn't influence the overall bounding box.
- new function - `$squelch_display()` - squelching of all drawing activity can be turned on or off.. turn off if you want to run plotting procs invisibly
- code cleanup to allow config files and proc settings to share common code for processing the settings
- code cleanup for eliminating spurious color change requests, which apparently can improve performance rather significantly in some cases. Thanks to Harshula Jayasuriya and colleagues.
- docs - direct cgi mode page overhauled; a new page for select attributes

2.30 - Bug fixes

- proc bars - crossover is now cancelled when set to a value below axis min, or above axis max.
- functions $arith(), $arithl(), $isnumber() now handle numbers in scientific notation. Ditto for conditional expressions.
- datetime w/ windowing - extra day was being shown, also a spurious warning message was being generated
- datetime w/ windowing - where last stub is AM, should be PM... a workaround is to use eg. laststub: 4PM
- in config file, `option:` content that requires quotes on the command line (eg. `"rectangle= 1 1 4 4"`) hadn't been parsed correctly. This is fixed, but quotes should not be used in config file.
- proc getdata now issues an implicit `#proc processdata action: breakreset`
- Some error messages had been going to the wrong place when `-errfile` was set on command line
- proc bars - when a crossover is used, one-way error bars need to go the opposite direction for the downward bars
- Noted - the `#ifspec` operator (used mainly when writing prefab scripts) requires care when intermingling with #clone.
- date arithmetic - a julian dates bug on leap years before 1970 has been fixed.
- proc annotate - clickmap box was way off with `textdetails: align=right`
- proc annotate - clickmap box (and bounding box) was not being influenced by `textdetails: adjust=...`
- SVG - the color `gray(1)` results in black in svg - should result in white.

## Version 2.21 - 12 May, 2004

- SVG - text messages on mouseover like done w/ client-side image maps now using overlib or similar. Here's a working example.
- proc vector can now render error bars and T-bars in arbitrary directions; also vectors can now be rendered by supplying two data points. Example.
- proc axis - `stubhide` attribute useful when doing tics but no stubs, allows more control over tic placement (any of the available stub-related options can be used, and no stubs are rendered).
- proc getdata - `commandmr` attribute is same as the `command` attribute but it accepts a multi-row shell command, terminated with a blank line.
- autorange - `numformat` parameter which may eliminate problems experienced when working with very large or very small magnitude data
- proc scatterplot - `labelword` allows a template to be specified for the `labelfield` value.
- proc processdata - `action: numberrows` ... this new action can be used to prepend sequential numbering to data set rows.
- programmer control over the first portion of all error messages. Command line arg `-errmsgpre`. Also may be set within scripts using #proc settings, or using the `$errmsgpre()` function.
- proc bars - `minlabel` attribute may be used to suppress bar labels when value is below a certain threshold (thanks to Jessika Feustel)
- proc bars - `errbarfields` now allows one-way positive (upward/leftward) error bars
- proc curvefit - `xsort` attribute, for forcing an x sort for interpolated curves
- SVG - provide a way to specify target with SVG clickmaps `<a xlink:"url" target=targ>` This can be done in proc settings using the new `svg_linkparms` parameter.
- New date formats - `dd-mmm ddmmm`

Improvements

- proc axis - `autoyears` now works with any date-based increment, and does not require a January stub to trigger it. Similar improvement for `automonths` and `autoyears`
- X11, SWF, GD driver limit of number of points in polygon (or continuous line with SWF) now dynamic (-maxdrawpoints)
- The following error messages silenced, as they can occur during normal operation: `proc legend, no entries exist yet`, and proc getdata `warning: no data fields found`.

Bug fixes

- Fixed bug - proc axis - `minorticinc` with datetime scaling - inc given in hours or minutes didn't work
- Fixed bug - `select: @sex = m` (incorrectly given with one at-sign) caused core dump..
- Fixed bug - legendlabels - size of 120 not long enough when embedded URLs are used. Raised to 256.
- Improvement - heatmap prefab - changed to use 'exact' category matching
- Fixed bug - heatmap prefab - If cutofflist was specified, no plot was produced.
- Improved handling of autorange lowfix=0 but all data negative problem
- Fixed bug involving longwise bar labels problem on stacked bars
- Improvement - proc lineplot - improved handling of degenerate case of NO points in range (anyvalid)
- Fixed bug - proc lineplot - line label is now subject to clipping
- Fixed bug - proc bars - `errbarfields` - incorrect data field accesses when two values are supplied
- Fixed bug - command line was interpreting arguments like `crop.pl` as `-crop`
- Fixed bug - X11 dashed lines - dash pattern was reset at beginning of each segment, problematic when data points are close together
- Fixed bug - legendentry tag - was sensitive to trailing spaces
- Fixed bug - proc axis - race condition when no stubs and no tics are specified.

## Version 2.20 - Released 20 Nov '03

- A major revisions / cleanup pass on the documentation.. it has been partitioned into a prefabs handbook and a scripts handbook, so that prefab users don't need to see the scripts documentation, and vice versa.
- New prefabs and new prefab parameters
- Fixed bug - Very small values (such as 9.24E-65), as well as any value in scientific notation, should now be handled properly everywhere when autoscaling and plotting.
- New - proc curvefit - new curve type - interpolated curve - code contributed by Oliver Koch
- New attributes - proc axis - `automonths` automatically displays the new month when plotting days, on month boundaries. Similarly, `autodays` displays a new date when plotting datetimes, on day boundaries.
- New attributes - proc pie - `colorfield` & `exactcolorfield` allow slice colors to be driven by data
- New attributes - proc pie - `labelback` & `labelbackoutline` for producing backing boxes for the slice labels
- New attribute - proc vector - `exactcolorfield` allow vector colors to be driven by data
- Improvement - proc getdata - `file` and `pathname` can now accept those wacky file names with embedded spaces found on Microsoft systems
- Improvement - command line option `-echo` - improved functionality
- New attributes - proc axis - `stubsubpat` & `stubsubnew` for performing substitutions on stub text; `stubmult` a way to multiply numeric stubs by some factor; `stubmininc` a way to ensure that automatic stub increment is never less than a certain amount.. for example when plotting integer data you don't want stubs to increment at 0.5; `labelinfo` specifies text that will appear as a popup when user moves mouse over the axis label;
- New script directive - #ifspec - useful when writing the scripts used by prefabs
- Improved - SVG - added `xmlns="http://www.w3.org/2000/svg"` to opening

## Version 2.11 - Released 20 May 2003

- New - SWF (flash) support - contributed by Bill Traill
- New - Popup text bubbles can be displayed when the mouse pointer hovers over data points when viewing ploticus-generated images in a web browser. Support for both scripts and prefabs. Accomplished using client-side imagemaps, with or without a clickable URL. Click here to see an example.
- Fixed - libploticus API - now supports multiple plot jobs within one OS process.
- New - proc vector - windbarbs support contributed by Andrew Phillips
- New - proc categories - supersedes specification of categories from within proc areadef. Categories are an entity independent of plotting area or current data set.
- New - proc processdata - new actions `segment` and `segmentb`
- New - proc bars - new attributes `exactcolorfield`, `constantlen`, `constantloc`
- New - clickmap support for proc rect
- New - axis - new attribute `stublen`
- New - pl command line - new option `-echo` to display interpreted, fully expanded script lines to stdout or stderr for debugging
- New - proc curvefit - sets ploticus variables XFINAL and YFINAL
- New - proc settings - new attribute `svg_tagparms` - allows you to insert additional attributes into the <svg> tag.. eg. <svg .. width="ww" height="hh">
- Improved - libploticus API - improved the consistency of error return codes
- Improved - clickmaps - labels and URLs now use malloced storage
- Improved - categories - category labels now use malloced storage
- Fixed - proc pie - percentages in labels weren't being converted to euro notation
- Fixed - proc axis - very large scale increments were causing race (fix contributed by Dan Pelleg)
- Workaround - proc usedata - fieldnames are lost when switching between data sets with proc usedata, due to a design flaw. As a workaround, field names can be respecified from within proc usedata.
- Fixed - proc breakaxis - `value` now accepts category values containing embedded whitespace
- Fixed - proc axis - self locating stubs were incorrect in Y axis
- Fixed - proc getdata - seg fault involving rejected data rows and filter processing
- Fixed - proc pie - `color: auto` was not working with legend
- Fixed - unix builds now should handle dos text (script files and data files)
- Fixed - proc axis - fixed axis stub increment "hours" and "minutes" support for datetime scaling & datetime w/ windowing
- Changed - libploticus API - `ploticus_begin()` is no longer necessary.

## Version 2.10 - Released Dec, 2002

- New - libploticus API. This is a simple C-callable API which will allow ploticus to be embedded in other applications, and facilitate interfaces to Perl, PHP, Pythin, etc. An associated code clean up was done to get `exit()`s and externally visible symbol names under control.
- New - proc vector for making vector plots like this:
- New - proc scatterplot - `rectangle` attribute for making heatmap plots like this:
- New - Unicode / Big-5 support.
  You must be using SVG or GD with FreeType fonts. Right-to-left languages apparently aren't handled consistently.
- New - Data capacities are now dynamic and can be raised at runtime using command line options such as `-maxrows` and `-maxfields`.
- New - command line options.. `-dir` may be specified to set the working directory; `-outlabel` may be specified to set the X window name or PostScript / SVG result title attribute. `-mapfile` allows the clickmap output file to be set explicitly, and may also be used to write the mapfile to `stdout` `-f` is now supported as an alternative for specifying the script file. Also several new capacity-setting options are available.
- New - proc usedata - allows selecting an active data set when there are multiple data sets in memory.
- New - proc axis attribute `stubexp` - displays axis in real space when data are in log-transformed space.
- New - proc axis `stubformat` - `autoround` is now an acceptable value, along with printf-specs such as `%.f`. `autoround` automatically rounds numeric values with result precision based on magnitude.
- New - proc page attribute - `outlabel`
- New - proc scatterplot attribute - `linedir` for controlling the direction of lines used as data points.
- New - proc lineplot attribute - `relax_xrange`
- New - system variable `PLVERSION` reports the ploticus version number.
- Fixes that should remedy CGI-mode problems, especially under win32 and web servers other than Apache: 1) `SCRIPT_FILENAME` environment variable is no longer relied upon. It was discovered to be non-spec. Instead, `argv[0]` is now used. 2) under win32, images sometimes display first few pixel rows only, as if corrupted. Now standard output is set to binary mode, which should remedy this problem. 3) an `.exe` suffix is now removed before building the `.cnf` name.
- Fix - disk resource limits completely removed. These are problematic and not worth the trouble, especially in CGI mode, since the 5MB (default) limit applies when appending (eg web server log files).
- Fix - script interpreter - script lines having first whitespace-delimited token longer than 40 chars (such as embedded comma-delimited data) cause overflow and seg fault on Linux.
- Fix - Lines in incoming data stream having first whitespace-delimited token longer than 255 chars (typically comma-delimited data) cause overflow and seg fault.
- Fix - proc processdata - values for the rejectfields attribute being parsed incorrectly from script.
- Fix - proc bars - bar labels for bars plotted from small numeric values eg. 0.005 not displayed.
- Fix - month name capacities expanded to accomodate non-English month names.
- Fix - number notation processing was being incorrectly applied to scientific-notation values.
- Fix - vertical right-adjusted FreeType text was being rendered horizontally.
- Fix - stacking of multiple data sets; eg. you can now tabulate on a processdata result.
- Change - proc processdata `stack` is now `no` by default.
- Change - proc originaldata has been mapped to proc usedata.
- Change - textdetails attributes - `align` may be specified in lower case or as words (`left`, `center`, `right`), as well as the old way (`L`, `C`, `R`).
- Change - config file parameters `sid`, `gid`, and `filesizelimit`. no longer supported.
- Change - number display settings have been removed from proc page. These apply to an entire script, not a page, and should be set using proc settings.
- Change - proc areadef - `catcompmethod` of `fuzzy` no longer supported (it never worked properly anyway).
- Noted - GD fonts - some of the characters in the extended ascii range differ from those normally expected there. This issue originates in the GD library.

## Version 2.04 - Released June 14, 2002

- New - proc lineplot - `clip` attribute allows lineplot curve to be clipped to the plotting area.
- New - proc lineplot - `sort` attribute for putting data into X order if necessary before plotting
- New - clickmap support for SVG.
- New - field names can now appear as legend labels. For the lines, stack, and vbars prefabs this will be the default if no name* parameters are specified and the data set contains a field name header. This feature can be used in scripts in proc bars, proc lineplot, proc curvefit by specifying `#usefname` for the `legendlabel`. Also available for proc scatterplot `legendlabel`.
- New - script syntax - a backslash can now be used to indicate start of leading whitespace in a multiline text line
- New - script syntax - if the name of an #included file begins with a dollar-sign ($), it is searched for in the ploticus prefabs directory. This provides a standard location for included files. See gallery example loglog as an example.
- Docs - FAQ and dataformat man pages significantly updated; a new page about pre-press work also available.
- Improved - config file errors now logged in CGI mode.
- Fix - EPS bounding box is now expressed in integers and use of `(atend)` is avoided except when EPS is written to stdout. Problems had recently been reported with newer versions of GhostView complaining about floating point values in the bounding box.
- Fix - CGI mode - QUERY_STRING used instead of REQUEST_URI
- Fix - proc axis - problems involving numerical axis stubs when a thousands separator (eg. 100,000) is used. On win32, garbage was being appended. There was also incorrect interaction with stub format, especially trailing format characters.
- Fix - dist prefab - title parameter wasn't working
- Fix - the $frommin() function (dealing with time data) was unstable.
- Fix - the limit for max # of categories (100 on each axis) was not being enforced, and max char length of a category has been raised to 78.
- Fix - there was a slight amount of error in ploticus GD driver character widths.
- Fix - zero-length data cells causing subsequent spurious "unplottable value" messages
- Fix - proc pie max number of slices increased to 80.
- Fix - proc settings incorrect interaction with page break
- Fix - minor tics with datetime scaling not taking daily time window into consideration.

## Version 2.03 - released on 4 March '02

This version includes many new features and bug fixes.

- Fixed bug - cgi mode - CGI SECURITY RISK - command line arguments that were insecure or inappropriate in CGI mode are now disabled when in CGI mode.
- pltab has been discontinued.
- Improvement - cgi mode - If -debug is specified all diagnotistic and error msg output automatically goes to specific files. This should simplify debugging in CGI mode.
- New feature - client-side imagemaps
- Improvement - proc datesettings has been expanded and renamed to proc settings. This proc can now be used to make most settings that previously required a config file.
- Improvement - proc bevelrect has been renamed to proc rect, and should now be thought of as the preferred way to draw arbitrary shaded rectangles.
- 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.
- Improvement - max number of legend entries raised to 80 (was 30).
- 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.
- Improvement - special #include statements that refer to the prefabs directory (filename beginning with $) may be used any time, not just with -prefab. This will make it easier to copy prefab scripts into other directories for customization.
- Fixed bug - pl crashes when reading any config file.
- Fixed bug - prefabs were not working in CGI mode.
- Fixed bug - script lines longer than 255 were overflowing. The published script line length limit is 3000.
- Fixed bug - cm mode - cm conversion was not being done on ploticus variables that hold generated absolute coordinate values (eg AREALEFT). Position of prefab titles was affected.
- Fixed bug - proc processdata - count action - the counts for highest and lowest category were off by 1.
- Fixed bug - problem with date formats containing dashes (eg. dd-mmm-yyyy) when setting up plotting area and data space.
- Fixed bug - number display - large number 000 separators interacting incorrectly with stub formatting.
- Fixed bug - times - the displayable seconds component of time values was being shown as a value between 0.0 -> 1.0 rather than 0 -> 60.
- Fixed bug - times - data values having a seconds component > 59.0 (eg. 59.3) were considered invalid.
- Fixed & improved - times - noon and/or midnight were displayed incorrectly when `hha` format was being used. Noon is now represented as `12n` and midnight is represented as `12am`.
- Fixed bug - proc legend - incomplete legend when specifyorder has more entries than the number of legend entries.
- Fixed bugs - cm mode - certain objects were too small in -cm mode, including default prefab plot size, various hard-coded prefab sizes, and default symbol size.

## Version 2.02 - Jan 11, '02

- HTML server-side imagemap support has been added.
- The data parsing code has been rewritten, and now allows situations that weren't allowed before, such as blank fields (tab or .csv formats), and variable number of fields per row. The dataformat documentation has also been improved.
- 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.
- modified attribute - proc getdata - `delim` - There is now a distinction between whitespace delimitation with quoted strings (`spacequoted`) and pure whitespace delimitation (`whitespace`). `whitespace` is faster, but the default remains `spacequoted` (`space` for short) so that existing scripts don't break. More info.
- 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).
- lines prefab - changed the way that the `fill` parameter works. Previously it had applied to all curves and line color was used. Now it is specified as a color, and separately for each curve (using fill2, fill3, and fill4). Note: this will break any existing applications that use the lines prefab to render multiple filled curves.
- The directory for prefab files can now be hard-coded at build time, settable in the Makefile. If this is done then users don't need the PLOTICUS_PREFABS environment variable to be set. This capability is not available on win32 builds.
- a new prefab called draw has been added. It interprets ploticus draw commands.
- some new functions, including $numgroup() and $dategroup() which are useful in grouping a set of numbers or dates into bins.
- the internal name lookup scheme for function names has been changed, and is now a little more efficient.
- fixed bug: proc bars - stacked bars are drawn incorrectly when minima is non-zero. Eg. stacked vertical bars are incorrect if the plotting area Y min is non-zero.
- fixed bug: proc bars - stacked bars - clobber bug causing core dump on linux.
- fixed bug: datetime scaling - floating point rounding problem. Came to light when user tried to autorange on a datetime field and was getting a minima time of 06:59 when it should have been 07:00.
- increased the size of file pathname variables from 127 to 255 and doing length checking on script file and output file name

  ## Version: 2.01 (16 Nov '01)

  New features:
  - SVG capabilities. The driver was written by Bill Traill.
  - The Makefile has been reworked. Before building ploticus you edit the Makefile and follow a simple 3-step procedure. There are more build variations than before.
  - Source code can now be compiled on win32 using mingW and maybe other compilers. More info.
  - 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.
  Bug fixes:
  - Some code problems related to the new CGI functionality have been cleaned up. These may have caused problems on some platforms.
  - proc getdata filter - data field names within proc getdata filter statements were not working. Fixed.
  - dates - dates earlier than 1977 causing problems with autorange and probably in other areas. This has been fixed to handle dates back to Jan 1 1800.
  - general - most command line args including var=value pairs were being retained in a 200 character buffer, a problem when command lines are longer. Fixed.
  - proc bars - problems with bar labeling when select is used; also clustering should work with segment bars. Fixed.

  ## Version: 2.00 (18 Sep '01)

  This major release introduces prefabs for creating standard types of plots directly from the command line, CGI mode, and optional JPEG, WBMP, and FreeType2 support. The script interpreter code has been completely replaced; a general clean-up pass was applied to all code.
  Specific new features:
  - Prefabs
  - CGI mode
  - Optional JPEG, WBMP, and FreeType2 support, however you must link to your own copy of GD library version 1.84 or higher when you build ploticus, and have the other required libs. See the Makefile for more info. Thanks to Michael Tonkin for getting the ball rolling on this. Here's an example that uses a TrueType sans serif font.
  - 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.
  - General code clean-up and efficiency improvements (thanks for the suggestions.. who wrote that code, anyway?!).
  - #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)
  A number of minor improvements and bug fixes are also present:
  - 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
  - Changed: proc axis - minor changes to avoid orphan date stubs and improper year placement (autoyears)
  - 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.
  - Fixed bug: proc legend - legend entry text could not be adjusted using textdetails `adjust=`
  - Fixed bug: proc bars - `select` omits bars but not labels. Thanks to Dan Tsafrir for finding this one.
  - Fixed bug: $arith() function - detects and issues an error on divide-by-zero.

  ## Ploticus is 2 years old - 25 Aug '01

  ## Ploticus version 1.41: 18 Jun '01

  - Ploticus now covered under .
  - proc bars - additional (diagonal) cross hatching available as an accessory.
  - 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

  ## Ploticus version 1.40: Jan 16 '01

  This release includes improved support for automatic on-demand plotting, especially automatic determination of scale and plot size from data. It also incorporates a bundle of new features, both user-requested and not.
  - 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

  ## FAQ Sept 29 '00 Expanded and updated.

  Recently added questions are denoted as NEW. Now includes some discussion of performance issues near the end of the document.

  ## Version 1.39: Sept 29 '00

  - Changed - proc transform renamed as proc processdata ('transform' still works)
  - Changed - script syntax - references to undeclared @variables are now left alone. Formerly they had resulted in syntax errors.
  - Added - proc areadef - autorange - if nearest= is omitted a reasonable default will be used for numeric data. Formerly it defaulted to exact min and max, which was usually not desirable. It is now possible to say nearest=exact to get exact min and max, should that be wanted.
  - Added - proc areadef - categories - a new attribute called 'catcompmethod', to control the details of how category comparisons are done.
  - Added - proc areadef - now sets variables XMIN, XMAX, YMIN, and YMAX
  - Fixed bug - proc areadef - autorange - problems with negative numbers;
  - Added - proc axis - 'stubs increment' with no following value gives a reasonable default increment. So does 'stubs inc 0'.
  - Added - proc bars - barwidthfield and bwfscale for data-driven bar widths
  - Added - proc datesettings - several new options for omitting weekends
  - Fixed bug - proc getdata - choking on long path names. Increased sizes of many buffers throughout.
  - Fixed bug - proc getdata field names - a name beginning with a number such as 16kHz was being interpreted as an integer field number.
  - Added - proc processdata - new actions 'breaks' to do break processing on data sets, and related action 'breakreset'.
  - Added - proc rangebar - when using meanmode, plotfields may now be used for getting a mean, standard deviation, and optionally an N value.
  - Changed - proc rangebar - variable NVALUES is now always set, even if nothing was plotted (it will be zero in this case).
  - Added - proc rangebar - new attributes showbriefstats, showstatsfile, briefstatstag to make a file holding computed statistical info that can be used by other programs
  - Added - proc rangebar - allow 'none' for outliernearsym and outlierfarsym, for when displaying outliers using only labels or line segments.
  - Added - proc rangebar - a new attribute called 'skipmed', to omit median and percentiles calculation when only means and standard deviations are needed (a performance consideration).
  - Fixed bug - proc rangesweep - bug involving the use of 'select'
  - Added - new function - $dataitem(), to access a single data item from the current data set by row and field position.
  - Added - command line / proc page - the options -croprel and -crop
  - Changed - ploticus temp file naming now uses shorter names
  - Added - user-contributed RPM spec file. See the Download page under Accessories.
  - Changed - makefile & build - copied gd_io.h to the gd16 subdirectory for successful solaris 'make' build
  - Added - MP/ix added to Makefile
  - Changed - gallery example EPS or Postscript files will no longer be stored on the web site, except for the pltab examples.
  - Changed - ploticus manual in postscript form will no longer be maintained or distributed.

  ## Ploticus is one year old: Aug 25 '00

  ## Version 1.38: Jun 9 '00

  - It is now possible to set the directory used for temp files, using a new config attribute tmpdir.
  - under cygwin, problems have been reported with pltab writing postscript to standard output. Workaround is to use pltab -o
    Version 1.37: May 24 '00
  - Added new proc - proc datesettings
  - Added - an option to omit weekends with date or datetime scaling, via proc datesettings
  - Improved - numeric data in scientific format e.g. 4.335e12 now supported
  - Improved - #declare and #musthave now can take comma-delimited lists of variable names
  - Fixed bug - proc bars, error bars not positioned correctly w/ clustering
  - Fixed bug - proc rangebar, 1.5iqr mode, incorrect upper tail length
  - Fixed bug - proc rangebar, zero length tail should not be drawn at all
  - Fixed bug - proc tabulate, entries should not be sorted when valuelist is used

  ## Version 1.36: Apr 10 '00

  - Fixed bug - categories scaling - handling of duplicate category tags
  - New attribute - proc bars - numberformat attribute
  - Improved - programs 8-bit clean and support locales - thanks to Oleg Bartunov
  - Fixed bug - removed a few x11 compile dependencies that were present even with -DNOX11
  - Improved - proc transform - numbernotation may be applied to TOTALS
  - Fixed bug - proc rangebar - 1.5iqr tails/outliers were incorrect for degenerate cases (small N)
  - Added a new function called $fieldname()
  - Improved - proc tabulate now allows NO ordering
  - Note: under cygwin, the directory /usr/tmp must exist and be writable by everybody.
  - Withdrawn - proc pie - lower edge of pie boundary is "fuzzy". A gd rounding error?

  ## Version 1.35: Mar 1 '00

  - Fixed bug - numbernotation - spacer chars being added within leading blank zones in stubs
  - Fixed bugs - proc lineplot - incorrect fill under stairstep curve and lastseglen
  - Fixed bug - proc getdata - program crashed when proc getdata filter encounters blank lines in data file
  - Fixed bug - proc rangebar - 1.5 x IRQ tails not computed correctly (also affects outliers)
  - Improved - postscript %%Creator and %%Title tags not used correctly
  - Fixed bug - proc pie - line+label not working correctly on gallery example pie4.htm
  - Improved - proc line - first coordinate pair should implicitly do a 'moveto'
  - Added pltab -landscape option
  - Added new function $max()
  - Fixed bug - pltab centering of column stubs (had been left-aligned)
  - Fixed bug - multi-page landscape postscript - 2nd page orientation was incorrect

  ## ploticus.perl Mar 1 '00

  This is a perl script which implements a web interface to ploticus. It was contributed by Tom McClure.

  ## Version 1.34: Jan 28 '00

  - Added `transparent` color; use as background color to create transparent GIFs and PNGs.
  - Added feature to display numbers in european or us notation with separators for large numbers (settable in config file).
  - Added proc tabulate `accumfield` option.
  - Added feature to make proc bars `stackfields` easier to use.
  - Fixed bug - proc tabulate not handling date (etc.) units correctly when ranges not specified.
  - Fixed bugs - proc areadef autorange - various problems involving large data values, datetime data, and nearest=hours.
  - Fixed bug - datetime scaletype - all values 'outside window' when default date & time notations in use, even though no window was defined.
  - Added areadef autorange sub-parameter `format`.
  - Added areadef autorange `nearest=day`.
  - Fixed bug - proc bars - default bar width sometimes much too wide; added a sanity override.

  ## Version 1.33: Dec 21 99

  - Added proc bars lablepos attribute
  - Fixed bug - config file "units: cm" not working.
  - Added -cm and -inches command line options.
  - Added -o stdout to write GIF, PNG, or EPS result to standard output.
  - Fixed bug - script files ending in .pl not handled properly.
  - Fixed bug - proc rangebar plotfields not working properly.
  - Fixed bug - proc bars taillen not being cloned properly for errorbars.
  - Fixed bug - proc areadef box attribute not handling cm properly.

  ## Version 1.32: Nov 15 99 (sunfreeware.com only)

  - Fixed bug - proc rangebar - 1.5*interquartile range tails were not truncated at the min/max.
  - Added proc bars colorlist attribute

  ## Version 1.31: Oct 29 99.

  - Fixed bug - proc getdata 'filter' caused instability on linux
  - Fixed bug - multiline legend entries too far apart
  - Fixed bug - proc rangebar outliers when a 'select' is being used
  - Fixed bug - proc rangebar and proc bar 'entire bar out of range' problem

  ## Version 1.3: Oct 27 99.

  - Added datetime scale type.
  - Added proc breakaxis.
  - Added proc rangebar outlier display and reporting features
  - Added hatch patterns as a color option
  - Added a new proc transform action called 'count'.
  - Added proc axis signreverse attribute to assist w/ high to low axes
  - Added 'hifix' and 'lowfix' to proc areadef autorange attribute.
  - In proc legend, the 'sep' attribute now controls the vertical separation when multiline format is used, as well as the horizontal separation when singleline format is used.

  ## Version 1.21: Sep 28 99.

  - Fixed proc page bug involving missing postscript showpage.
  - Fixed proc page bug involving incorrect default line width on page 2 and up of a multipage result
  - Proc page - default EPS behavior changed to NOT do background, unless a background color is specified.
  - Fixed bug where timestamp directory name is truncated incorrectly.
  - Script file names can now end in .pl (in addition to .p, .htm, .html as before)
  - Minor items related to AIX port.

  ## Version 1.2, Sep 13 99.

  - Added PNG support.
  - Fixed bugs in Pie and textdetails style subattribute.
  - Dropped the Page/device attribute.
  - Added the Annotation/boxmargin attribute.
  - Removed support for GIF import.

  ## Version 1.1, Aug 30 99

  - fixed proc lineplot bug evidenced by stock.htm;
  - other minor items related to linux & irix port. (note: pl -version still reports 1.0 in some of the binaries)

  ## Version 1.0, Aug 25 99, original release.

  data display engine
  Copyright Steve Grubb

  Markup created by unroff 1.0, `` `` August 23, 2005.