A revision pass was done affecting all script and attribute parsing, with the goal of
eliminating attribute length restrictions where possible, and reducing string copy operations.
proc getdata ... data sets using the bar character (|) as field delimiter are now supported.
Also, there's now delim: auto which tries to automatically determine data field delimitation.
proc processdata ... new actions: summary, summaryplus, raccum ... new attributes binsize, binmod
proc boxplot (formerly proc rangebar) ... functionality change.. it now produces a
set of boxplots in a similar way to how other procs (such as proc bars) operate. Any existing scripts using proc rangebar
will require attention.
new pl(1) command line options
-pixsize (to set exact size of result image in pixels), and
-cputime (to set cputime resource limit). As usual these have equivalent settings in
proc page and/or proc settings
axis autorange now supports the following: nearest=Nminute nearest=second nearest=Nsecond
proc image (formerly called proc import)...
gifs can be imported. Images can now be incorporated into SVG plot results. Clickmap support.
color ... color specifications using notation such as xFEDCBA now supported
Slanted axis stubs are now supported. See proc axis stubvert parameter
A number of other new attributes that are specialized or of minor interest
2.40 Bug fixes
bug related to legend-driven bar graphing
direct pixel data points inherit current line dashing .. symboldetails needs to set linetype to plain
segfault occuring after error 12040 "DISPLAY=" ?
svg compile and swf segfault bugs
proc getdata - recent fix related to #field names and #data fields needs to take filters into account
proc categories - when cats specified literally, trailing whitespace is taken as part of category
proc image segfaults with -x11
proc lineplot - gapmissing autozero not working right
segfault when -csmap is used with long urls
proc processdata MIN, MAX - not affected by 'resultformat' but should be
First x stub is a little higher than the others
gd color bug when degenerate data row encountered [color change bug - lineplot gapmissing and fill options]
prefab chunk_title - align= was giving backward results
proc bars - segments - code bug demonstrated by gallery/timeline2.htm
proc bars - instability related to color change optimization (wild draw location)
prefab cumufrac - no curve produced for certain input data (see msg 1974)
clickmap - the clickmap entries for plot elements sitting on top of a clickmap grid are written too late
in the map and mouse doesn't respond. For gif/png/jpg imagemaps, need to write map entires in this order:
1) plot element regions 2) xy grid regions 3) single-dimention grid regions. (svg uses the opposite order)
scripts having embedded CSV data (w rows > 255) can break script processor causing instability.
proc annotate instability on filled rectangle draw caused by unitialized bd* vars
proc curvefit - xfield was required, but doesn't need to be
legend - repeated use of legends eventually gives "Sorry, too much legend content" msg
prefab overlays - each run needs to output a code into the dumpfile that tells pcode to do a graphics init.
Otherwise, run 2 inherits current color (other settings?) left behind by run1
proc axis - stubround - 1st stub seems to be often omitted even when it is a round value (snps/distplot)
URL encoding shouldn't encode '.' or other normal punctuation chars..
floating bars weirdness
instability when trying to #set a var to length > 334 chars
instability when supplying a long perl script with #proc getdata commandmr
Ploticus 2.33 (June 2006) New features
direct pixel data point symbols for gd and x11, to provide sharp non-distorted data points.
In the example below the first two rows use the new direct pixel data points, while the 3rd row shows
the vector-based data points that have always been available.
proc venndisk - some new attributes to support "vennmag" plots (a series of disks resting on X axis
to compare magnitudes). Here's an example:
clickmaps - new clickmapurl syntax to allow deployment in a new window, etc. Syntax is like this:
clickmapurl: [target=new]http://abc.com/cgi-bin/...
SVG - proc settings / config files - svg_linkparms attribute discontinued. Use the new clickmapurl syntax (see above)
proc axis - stubround attribute - solves the old problem of getting stubs at round number locations when plot
area minima is not at a round location.
proc lineplot - gapmissing: autozero
proc bars - new attributes for better control of bar labels: labelmustfit, labelmaxlen, labelselect
pl command line -ping option
proc scatterplot - cluster attribute - default will now be 'no'
prefab scat - new parm ptstyle= filled or outline ..... and changed to use the new direct pixel data point symbols.
2.33 Bug fixes
clickmap - url encoding is now performed on variable contents and axis values that are substituted into clickmapurls
proc categories - uniqueness check wasn't applied when categories listed literally. Useful in apps where the list is
generated by another program or whatever.
improved handling of very long command line args - each arg is silently truncated to 255 chars.
var=value parameters cannot begin with a dash as may have been previously tolerated.
var=value parameters are now intercepted before entering the arg name big decision structure.
$dategroup() function didn't know about datetime separator characters other than '.'
issue where the "circuit breaker tripped" message was appearing when autorange is used but no stubs / no tics were being generated
ploticus api code bug - prefabs were not usable via api
made adjustments to improve rounding error when axis begins in negative space and reaches zero, zero was shown a very tiny scientific notation number
proc processdata - percents - resulting data values were written as enclosed in quotes which made them unplottable.
fixed many compile warnings when building w/ gcc4 -Wall
drawing to out-of-bounds locations (GD) resulted in huge image.
The pl bounding box was set to a huge rectangle due to a wild draw op..
then the final GD crop operation used the huge bounding box to set the size for the cropped result.
Fixed by limiting final result to 'pagesize'.
proc bars - longways labels on bars that travel beyond plot area boundary weren't being shown/centered properly.
in the -scale parameter, if you used -scale 1,2 the scale did not change but -scale 1.01,2 does work.
Fixed- some code was only taking action if x scale != 1.0
svg - opening
Ploticus 2.32 - 23 Aug '05 - New features
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 (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
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.