9. Skribilo User Manual — Pie Charts
Contents↑ Skribilo User Manual

Skribilo contains a pie-chart formatting package, located in the (skribilo package pie) module. It allows users to produces represent numeric data as pie charts as in the following example:

Use of Document Formatting Systems
Use of Document Formatting Systems

A default implementation, which uses Ploticus as an external program, is available for all engines. There is also a specific implementation for the Lout engine which relies on Lout's own pie-chart package. In the latter case, you don't need to have Ploticus installed, but you need it in the former.

Currently it only supports slice-coloring, but support for textures (particularly useful for black & white printouts) could be added in the future.

9.1 Syntax

Let us start with a simple example:

;; A sad pie chart.
;;

(pie :title [Casualties in the Israel-Lebanon 2006 Conflict (source:
English Wikipedia page, 2006-07-23)]
     :total 450 ;; to show the uncertainty on figures
     :ident "pie-lebanon-2006"
     :labels 'outside :fingers? #t

  (slice :weight   8 :color "black" [Hezbollah militants])
  (slice :weight  42 :color "blue"  [soldiers])
  (slice :weight 317 :color "red" :detach? #t
         [civilians (,(sliceweight :percentage? #t)%)]))
Ex. 39: Example of a pie chart

... produces:

Casualties in the Israel-Lebanon 2006 Conflict (source: English Wikipedia page, 2006-07-23)
Casualties in the Israel-Lebanon 2006 Conflict (source:
English Wikipedia page, 2006-07-23)

This illustrates the three markups provided by the pie package, namely pie, slice, and sliceweight. This last markup returns the weight of the slice it is used in, be it as a percentage or an absolute value. Note that the :total option of pie can be used to create pie charts no entirely filled.

Various options allow the pie layout to be controlled:

;; Another sad pie chart.
;;

(pie :title [Casualties of the Conflict in Iraq since 2003 (source:
English Wikipedia page, 2006-07-23)]
     :ident "pie-iraq-2006"
     :fingers? #f
     :labels 'inside
     :initial-angle 45
     :radius 2

  (slice :weight 100000 :color "red" :detach? #t
         [civilians (,(sliceweight :percentage? #t)%)])
  (slice :weight (+ 2555 229) :color #xeeeeee  [soldiers]))
Ex. 40: Specifying the layout of a pie chart

... produces:

Casualties of the Conflict in Iraq since 2003 (source: English Wikipedia page, 2006-07-23)
Casualties of the Conflict in Iraq since 2003 (source:
English Wikipedia page, 2006-07-23)

The available markups and their options are described below.

prototype
(pie [:labels 'outside] [:fingers? #t] [:radius 3] [:total] [:initial-angle 0] [:title "Pie Chart"] [:class "pie"] [:ident])
optionenginesdescription
:identhtml lout latex context info xml The node identifier.
:classhtml lout latex context info xml The node class.
:titlehtml lout latex context info xml The title of the pie chart.
:initial-anglehtml lout latex context info xml The initial angle of the pie, in degrees.
:totalhtml lout latex context info xml If a number, specifies the "weight" of the whole pie; in this case, if the pie's slices don't add up to that number, then part of the pie is shown as empty. If #f, the total that is used is the sum of the weight of each slice.
:radiushtml lout latex context info xml The pie's radius. How this value is interpreted depends on the engine used.
:fingers?lout Indicates whether to add "fingers" (arrows) from labels to slices when labels are outside of slices.
:labelshtml lout latex context info xml A symbol indicating where slice labels are rendered: outside to have them appear outside of the pie, inside to have them appear inside the pie, and legend to have them appear in a separate legend.
See also
slice
prototype
(slice [:detach?] [:color "white"] [:weight 1] [:class "pie-slice"] [:ident] label)
optionenginesdescription
:identhtml lout latex context info xml The node identifier.
:classhtml lout latex context info xml The node class.
:weighthtml lout latex context info xml An integer indicating the weight of this slice.
:colorhtml lout latex context info xml The background color of the slice.
:detach?html lout latex context info xml Indicates whether the slice should be detached from the pie.
argumentdescription
labelThe label of the node. It can contain arbitrary markup, notably instances of sliceweight. However, some engines, such as the Ploticus-based rendering, are not able to render markup other than sliceweight; consequently, they render the label as though it were markup-free.
See also
pie sliceweight

As seen in the examples above, the body of a slice markup can contain instances of sliceweight to represent the weight of the slice:

prototype
(sliceweight [:percentage?] [:class "pie-sliceweight"] [:ident])
optionenginesdescription
:identhtml lout latex context info xml The node identifier.
:classhtml lout latex context info xml The node class.
:percentage?html lout latex context info xml Indicates whether the slice's weight should be shown as a percentage of the total pie weight or as a raw weight.
See also
slice

(made with skribilo)