Chart Plugin

This plugin creates PNG or GIF charts to visualize TWiki tables using a default linear scale or an optional semilogarithmic scale.

Five types of charts, line, area, bar, scatter and combo, are currently available:

Type of Chart Name What it Does Example
Area area Shows a chart using areas under a line to represent the data
Bar bar Shows a chart using bars to represent the data
Line line Shows a chart using simple lines, points only, or lines with points to represent the data.
Note: Any areas that fall behind already drawn areas are drawn as lines to make them visible
Scatter scatter Shows a scatter chart (XY data points) and allows mixing area or bar with line, point, and pline
Combo combo Shows a chart combining the features from area or bar with line, point, and pline
Note: Formally known as arealine which is still supported

The %CHART{...}% variable gets expanded to an image representing the chart. Parameters and global settings determine the type of chart, dimensions, and values.

HelpChart Global Settings

Plugin settings are stored as preferences variables. To reference a plugin setting write %<plugin>_<setting>%, for example, %CHARTPLUGIN_SHORTDESCRIPTION%

  • One line description, shown in the TextFormattingRules topic:
    • Set SHORTDESCRIPTION = Create PNG or GIF charts to visualize TWiki tables

  • Set DEBUG to 1 to get debug messages in data/debug.txt. Default: 0
    • Set DEBUG = 0

  • Default chart used: area, line, bar, scatter or combo. Default: line
    • Set TYPE = line

  • Default dimensions, scale and colors for a chart. See details in the syntax rules.
    • Set WIDTH = 400
    • Set HEIGHT = 250
    • Set AREA_COLORS = #FF3333, #FFFF33, #33FF33, #CC66FF, #99FFFF, #FFCC00, #008000, #FF8080, #3366CC, #800080
    • Set LINE_COLORS = #FF0000, #FFCC00, #00CC00, #FF00FF, #33CCCC, #FF8000, #009900, #FF6666, #3333FF, #800080
    • Set BGCOLOR = #FFFFFF, #FFFFFF

  • Define the grid color. When xgrid/ygrid = "on", then just use the first color when drawing grid lines. When their value is "dot", then use the full specification for drawing the grid lines ("transparent" can be used to introduce holes in the line).
    • Set GRIDCOLOR = #808080, #808080, #808080, transparent, transparent, transparent
    • Set NUMYGRIDS = 9

  • Define what to do when an empty table cell is found. "none" means assume no default value. A value of "10" would mean empty cells would be assumed to have a value of 10
    • Set DEFAULTDATA = none

  • Define the default scale: linear or semilog
    • Set SCALE = linear

  • Define the number of pixels wide lines are drawn with
    • Set LINEWIDTH = 3

  • Define the number of pixels (in both the X and Y directions) to use when drawing a point
    • Set POINTSIZE = 5

  • Define bar chart specific parameters. BARSPACE defines the space (in pixels) between bars. BARLEADINGSPACE defines the leading space (in pixels) before the first bar. BARTRAILINGSPACE defines the trailing space (in pixels) after the last bar
    • Set BARLEADINGSPACE = 6
    • Set BARTRAILINGSPACE = 6
    • Set BARSPACE = 5

Syntax Rules

The %CHART{...}% variable gets expanded to an image representing the chart.

  • Some parameters expect a range of table cells, using SpreadSheetPlugin syntax:
    • A table cell can be addressed as R1:C1. Cell addresses:
      R1:C1 R1:C2 R1:C3 R1:C4
      R2:C1 R2:C2 R2:C3 R2:C4
  • A range of table cells is defined by two cell addresses separated by "..". For example, "row 1-20, column 3" is: R1:C3..R20:C3 and "row 15-5, column 2" is: R15:C2..R5:C2

%CHART% Parameter Comment Default
type The type of chart to create. One of "area", "bar", "line", "scatter", "combo" Global TYPE setting
subtype Sub type of chart. Supported values depend on chart type:  
- for type="area" =   subtype="area" "area"
- for type="bar" =    subtype="bar" "bar"
- for type="line" =   subtype="line, point, pline" (point line) "line"
- for type="scatter" subtype="area, bar, line, point, pline"
Note: you cannot mix area and bar on the same chart.
Note: It is not recommended using showing a bar on a scatter chart as the X axis placement is skewed with bar and will not exactly line up with drawn X axis values which will defeat the purpose of using scatter in the first place.
"point"
- for type="combo"   subtype="area, bar, line, point, pline" (note: you can not mix area and bar on the same chart) All but the last data set are drawn as "area" and the last is drawn as "line"
You can use a comma delimited list of values to set a specific subtype for each data set. For example "area, area, point, line" would say that the first two data sets are areas, the third is point and the last one is a line  
scale The scale to use when creating the chart. "linear" or "semilog" Global SCALE setting
name Name to uniquely identify the chart file that is auto-created. None; is required for all charts
web The web in which to find topic (specified below) in which to find the TWiki tables The current web
topic The topic in which to find the TWiki tables The current topic
table TWiki table used to build the chart. A numerical value refers to the table number, where "1" is the first table seen in a topic. Any other non-numeric string refers to a named table defined by the TABLE variable with a name parameter. For example, table="trends" refers to the table that is preceded by %TABLE{ name="trends" }%. "1"
title The title placed at the top of the chart None
xlabel The label placed under the X axis describing the X values None
ylabel The label placed to the left of the Y axis describing the Y values None
data The source data to build the chart, defined as a range of table cells. For example for type="line", a data="R2:C3..R999:C6" would say that four lines were to be drawn with first line being rows 2-999 column 3 and last line being rows 2-999 column 6. None; is required for all charts
defaultdata If there is sparse data, then use the value specified by defaultdata to fill in the missing data. A value of "none" means only draw actual data points. Global DEFAULTDATA setting
xaxis X-Axis labels: The values are defined as a range of table cells. In case of scatter graph, xaxis represents the actual X values. The range also defines the orientation -- row or column oriented (if specified). For example "R2:C2..R999:C2" would take all of column 2 starting at row 2 and going through row 999. It would also denote that all remaining data is oriented columnar. None. Is required for type="scatter". If not specified, then no X axis labels shown and data assumed to be in columnar format.
xaxisangle Angle the X-Axis labels are drawn. Only two angles are supported at this time, "0" draws horizontal labels, other numbers draw vertical labels "0"
yaxis Y-Axis labels: "on" to show the labels, "off" for no labels. "off"
ymin Minimum value drawn on the Y axis The minimum value specified by data
ymax Maximum value drawn on the Y axis The maximum value specified by data
xgrid Grid shown for X axis: "on" for solid grid lines, "dot" for dotted grid lines, "off" for none. "dot"
ygrid Grid shown for Y axis: "on" for solid grid lines, "dot" for dotted grid lines, "off" for none. "dot"
numygrids Number of Y axis grids drawn Global NUMYGRIDS setting
ytics Number of tic marks to draw between Y axis grid lines. If scale="semilog", then ytics="10", else defaults to "0"
numxgrids Number of X axis grids drawn. This can be used if there are a large number of X axis data points such that the X axis labels overlap. Draw all X-Axis labels
datalabel Show data labels: "on" for labels, "box" for label in a box, "off" for none. It can also be a list like "off, off, off, box" to show values in a box for the fourth set of data points only. "off"
legend Legend shown to the right of the chart. For example "R1:C3..R1:C6" would take all of row 1 starting at column 3 and going through column 6 as the name/legend of each set of data points None; no legend if not specified
width Defines the overall width of the chart in pixels. Global WIDTH setting
height Defines the overall height of the chart in pixels. Global HEIGHT setting
alt Alternate text for chart image Empty alt tag
colors A list of colors defining the color of each set of data points. Global LINE_COLORS setting for lines; global AREA_COLORS setting for area
bgcolor Background color of the area surrounding the chart. For example, "#E7E7E7" sets a light gray background. Optionally specify a second values for the chart background itself. For example, "#E7E7E7, #FFFFC0" defines a chart with a light yellow background on a light gray surrounding. Global BGCOLOR setting
gridcolor Colors/style of the grid (if any). If xgrid or ygrid = "on" then use the first gridcolor for drawing solid grid lines. If xgrid or ygrid = "dot", then use the full set of colors to define the line style for drawing the grid lines ("transparent" can be used to introduce holes in the line)" Global GRIDCOLOR setting
linewidth Width of data lines in pixel Global LINEWIDTH setting
pointsize Size of data points in pixel Global POINTSIZE setting
(other parameters) Other parameters are passed on to the img tag. Useful to add additional image parameters like align="right" None

Note: To support legacy syntax, datatype maps to subtype, arealine maps to combo.

Examples

Assuming the following three TWiki tables. The first shows the data oriented in columns while the seconds shows the data oriented in rows

Table 1:
Year Actual
1998 9
1999 14
2000 19
2001 25
2002 39

  Table 2:
Year 1998 1999 2000 2001 2002
Low 8 10 13 17 22
Target 10 12 17 20 25
High 12 15 19 24 29
Actual 9 14 15 19 27

  Table 3:
X Y1 Y2 Y3
3 1 3 7
6 5 8 10
11 3 5 9
10 1 3 7
8 2 3 8

Type of chart You type You should get... ...if installed
area Multiple area

%CHART{ type="area" name="area1" table="exampleTable2" data="R2:C2..R5:C6" xaxis="R1:C2..R1:C6" legend="R2:C1..R5:C1" width="225" height="200" }%
bar Multiple bars

%CHART{ type="bar" name="bar1" table="exampleTable2" data="R3:C2..R5:C4" xaxis="R1:C2..R1:C4" legend="R3:C1..R5:C1" ymin="0" width="225" height="200" }%
line Simple line

%CHART{ type="line" name="line1" table="exampleTable1" data="R2:C2..R6:C2" xaxis="R2:C1..R6:C1" legend="R1:C2..R1:C2" width="225" height="200" }%
line Multiple lines

%CHART{ type="line" name="line2" table="exampleTable2" data="R2:C2..R5:C6" xaxis="R1:C2..R1:C6" legend="R2:C1..R5:C1" width="225" height="200" }%
scatter Multiple scatter

%CHART{ type="scatter" subtype="pline" name="scatter1" table="exampleTable3" data="R2:C2..R6:C4" xaxis="R2:C1..R6:C1" legend="R1:C2..R1:C4" numxgrids="4" linewidth="1" width="225" height="200" }%
combo Combo with area, pline, point, & line

%CHART{ type="combo" subtype="area, pline, point, line" name="combo1" table="exampleTable2" data="R2:C2..R5:C6" xaxis="R1:C2..R1:C6" legend="R2:C1..R5:C1" width="225" height="200" }%
combo Combo with bar, pline, point, & line

%CHART{ type="combo" subtype="bar, pline, point, line" name="combo2" table="exampleTable2" data="R2:C2..R5:C6" xaxis="R1:C2..R1:C6" legend="R2:C1..R5:C1" width="225" height="200" }%

The "if installed" column shows images instead of variables in case the plugin is installed correctly.

Output

  • A graphics file in PNG or GIF format is created containing the chart results. The file is placed in %PUBURLPATH%/%WEB%/%TOPIC%/_ChartPlugin_<type>_<name>.png or .gif (GIF for GD version 1.19 or older)
  • %CHART{...}% gets expanded to an <img ... /> image tag.
Topic revision: r1 - 06 May 2008 - 02:43:48 - JimCrum
 
This site is powered by the TWiki collaboration platformCopyright © 2012 by the contributing authors. All material on this collaboration platform is the property of the contributing authors. Permission to copy, distribute and/or modify is granted for this document under the GNU Free Documentation License.
Ideas, requests, problems regarding WikiOraApps? Send feedback