Template:Pie chart/doc

This is a template that draws pie charts using a single image, a lot of (inline) CSS code generated by parser functions, and absolutely no JavaScript. Some details of how it works are given below.

Usage
The labels, values, and colors of up to 30 slices may be specified. All the parameters for six slices are included below; to include more slices, copy the code for one of the others, changing the digit at the end of each parameter name.

Parameters

 * thumb specifies which side of the page the chart is floated to and defaults to, as with image files. To make the chart appear on the left side of the page, specify left.
 * radius specifies the radius of the pie chart in pixels. Do not include a "px" suffix. If omitted, it will default to 100.
 * caption specifies a string of text that appears on a line just before the legend.
 * footer specifies a string of text that appears below the legend.
 * other, if set equal to any visible string (even "0" or "no"), an "Other" item will appear in the legend, corresponding to the final slice that makes the values add up to 100. (If the total is already over 100, then the "Other" percentage will be negative.)
 * other-color can be used to override the default white color of the "Other" slice.
 * Each labelN is a string of text that appears in the legend entry for a slice. Omitting it will cause a legend entry to not be shown for that slice.
 * Each valueN is the percentage that the slice represents. Do not include the percent sign (e.g., for eighty percent, use the value "80", not "80%" or ".80"). Collectively, the values must add to 100 or less (in the latter case, a final slice completes the pie, whether other is specified or not). Also note that each value is shown in the legend exactly as written, without any rounding or other reformatting.
 * Each colorN is a CSS color code or name. If omitted, the default color palette seen in the pie chart to the right is used. If you need to graph more than 14 values (not counting the "Other" slice), then you should specify color15 onwards in the template call.

Limitations

 * Google Chrome and Safari do not appear to anti-alias borders, so the lines are a bit jagged. (For Chrome, this issue seems to be resolved, as of version 26.)
 * Due to how the graphing is implemented, it is not possible to save a copy of the chart using the browser's "Save Image" function (however, a screenshot can be taken).
 * If other is set, the final slice is always labeled as "Other" in the legend. This is not configurable. If you don't like that, just add to the template call another slice with the appropriate value (to sum to 100) and the desired label, and don't use other.
 * No labels can be put on the slices themselves.
 * The maximum number of slices that can be displayed is 30.
 * Currently the default colors used for slices 15 onwards are all the same as the default color of slice 14.
 * If the specified values add to 100 and other is set, the calculated percentage for that slice can sometimes turn out to be very strange (e.g., "1.4210854715202E-14%" instead of "0%")

Examples
The following code generates the pie chart shown at right. Note that the default chart size and colors are used, and the value of "1" for the "other" parameter is only used for its "truth value" as a visible string—i.e., to say, yes, we want an "Other" entry in the legend (the same chart would result if "0" were used).



Here's a more real-world example.



How it works
This template uses a technique for drawing diagonal lines in CSS exploiting the fact that borders set on elements are miter joined. Thus, it is possible to set one border to an opaque color, with the others fully transparent, to form a diagonal line. The angle of the line can be controlled by adjusting the widths of two adjacent borders (one of them opaque) relative to each other.

Pie slices are drawn in clockwise order in a counterclockwise direction. These pie slices are positioned: This allows only the part of each slice that is inside the circle to be visible on the page.
 * Inside a square element of (2 * radius)x(2 * radius) pixels
 * with  for a circular shape
 * with a white (or other specified color) background visible in the empty space that occurs if the "other" slice is present
 * and with  set.

Most of the code in is divided into five sections, the first four corresponding to quadrants of the circle and the last to cleanly cover the case in which one slice occupies 100% of the chart.