proc legend - support for multi-column or multi-row legends, word wrap for legend entries,
backing box, title, and others. Thanks to Philippe Jalaber and Tobias Minich who suggested some of these features.
Examples
proc venndisk - new proc for producing venn diagrams.
textdetails - new linesep attribute to control line spacing.
mousover/tooltip labels can now be up to 1500 chars. Also any proc that had a clickmaplabel
attribute now also has a clickmaplabeltext multiline attribute. This is to
accomodate chunks of javascript code as used with SVG mouseover/tooltip method #2.
proc axis - month stub inc with datetime scaletype now supported.
proc pie - new wraplen attribute to wordwrap pie slice labels
new function - $rewritenum(f) which takes a numeric quantity f and
returns it rewritten for display purposes, applying numbernotation (as specified in your proc settings
or config file)
new function - $textwidth(f)
returns horizontal width of FreeType bounding box. Useful only with freetype fonts, otherwise it returns 0.
Suggested/contributed by Erik Zachte.
autorange - if user doesn't specify numformat, %f is now
automatically used to build result with high magnitude low variance data sets
(such as where the min is 1,000,000 and the max is 1,000,003).
Prefab parameters for access to some of the new proc legend features; and some other prefab items.
More info
2.32 Bug fixes
date notations involving dots (such as dd.mm.yy) weren't being handled properly
gd16.c gcc 4 compile issue (static int cost, static int sint)
crosshatch lines were too thin w/ svg
proc bars - with 'truncate', bar completely out of range was suppressed but label still appears
drawcommands ignored cm units - fixed. Also, mark and cblock now accept posex specifications.
heatmap prefab - now supports title and related parameters.
superscripts in X axis stubs showed up on Y axis - fixed
autorange - now handles degenerate case where all data are 0
proc vector - instability if start and end points of a vector are same
proc getdata no longer does a popen( cat filename ) in CGI mode
strange color change problem - related to certain degenerate lineplots that
don't draw anything. Bug in proc_lineplot.c fixed.
proc legend width attribute now supports cm
heatmap prefab - yaxis=none didn't have any effect. Fixed.
proc pie - with outlinedetails: none the labels and any associated lines disappeared
proc scatterplot - default clustermethod was horizontal when ylocation given..
and vertical when xlocation given.. seems like it should be the other way round.. so I changed it.
with datetime (others?) xautorange nearest=exact wasn't working
command line option -prefab is now disabled when operating in direct cgi mode
command line option -drawdumpa displayed to x11 but shouldn't
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:
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
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 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 settingsenable_suscripts (or in your config file).
Prefabs have superscript/subscript capability turned on by default. More info.
Example.
-drawdump and -drawdumpacommand 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 settingsencodenames or
in config file. Example.
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 settingsps_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.
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.
Ploticus 2.21 - 12 May, 2004 - New features
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 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
2.21 - 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.
2.21 - 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.
Ploticus 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.
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
Ploticus 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 - 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.
Ploticus 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 - 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 axisstubformat - 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 - 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 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.
Ploticus 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 - 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 scatterplotlegendlabel.
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.
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 - 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.
Ploticus 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.
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.
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: 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.
Ploticus 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.
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.
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: 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
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 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 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
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 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
Recently added questions are denoted as NEW.
Now includes some discussion of performance issues near the end of the document.
Ploticus 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
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
Ploticus 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
Ploticus 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
This is a perl script which implements a web interface to ploticus.
It was contributed by Tom McClure.
Ploticus 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.
Ploticus 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.
Fixed bug - proc rangebar - 1.5*interquartile range tails
were not truncated at the min/max.
Added proc bars colorlist attribute
Ploticus 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
Ploticus 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.