NAME
Imager::Graph::Pie - a tool for drawing pie charts on Imager images
SYNOPSIS
use Imager::Graph::Pie;
my $chart = Imager::Graph::Pie->new;
# see Imager::Graph for options
my $img = $chart->draw(labels=>['first segment', 'second segment'],
data=>[ $first_amount, $second_amount ],
size=>[$width, $height])
DESCRIPTION
Imager::Graph::Pie is intender to make it simple to use Imager to create good looking pie graphs.
Most of the basic layout and color selection is handed off to Imager::Graph.
- $graph->draw(...)
-
Draws a pie graph onto a new image and returns the image.
You must at least supply a
data
parameter and should probably supply alabels
parameter.The
data
parameter should be a reference to an array containing the data the pie graph should present.The
labels
parameter is a reference to an array of labels, corresponding to the values indata
.
FEATURES
As described in Imager::Graph you can enable extra features for your graph. The features you can use with pie graphs are:
- legend
-
adds a legend to your graph. Requires the labels parameter
- labels
-
labels each segment of the graph. If the label doesn't fit inside the segment it is presented as a callout.
- labelspc
-
adds the percentage of the pie to each label.
- labelspconly
-
the segments are labels with their percentages only.
- allcallouts
-
all labels are presented as callouts
- pieblur
-
the segments are blurred, as a substitute for anti-aliased arcs
- outline
-
the pie segments are outlined.
- dropshadow
-
the pie is given a drop shadow.
EXAMPLES
Assuming:
# from the Netcraft September 2001 web survey
# http://www.netcraft.com/survey/
my @data = qw(17874757 8146372 1321544 811406 );
my @labels = qw(Apache Microsoft iPlanet Zeus );
my $pie = Imager::Graph::Pie->new;
First a simple graph, normal size, no labels:
my $img = $pie->draw(data=>\@data)
or die $pie->error;
label the segments:
# error handling omitted for brevity from now on
$img = $pie->draw(data=>\@data, labels=>\@labels, features=>'labels');
just percentages in the segments:
$img = $pie->draw(data=>\@data, features=>'labelspconly');
add a legend as well:
$img = $pie->draw(data=>\@data, labels=>\@labels,
features=>[ 'labelspconly', 'legend' ]);
and a title, but move the legend down, and add a dropshadow:
$img = $pie->draw(data=>\@data, labels=>\@labels,
title=>'Netcraft Web Survey',
legend=>{ valign=>'bottom' },
features=>[ qw/labelspconly legend dropshadow/ ]);
something a bit prettier:
# requires Imager > 0.38
$img = $pie->draw(data=>\@data, labels=>\@labels,
style=>'fount_lin', features=>'legend');
suitable for monochrome output:
# requires Imager > 0.38
$img = $pie->draw(data=>\@data, labels=>\@labels,
style=>'mono', features=>'legend');
INTERNAL FUNCTIONS
These are used in the implementation of Imager::Graph, and are documented for debuggers and developers.
- _consolidate_segments($data, $labels, $total)
-
Consolidate segments that are too small into an 'others' segment.
- _pieblur($img, $cx, $cy, $radius)
-
Blurs the pie as a substitute for anti-aliased segments.
- _fit_text($cx, $cy, $name, $text, $radius, $begin, $end)
-
Attempts to fit text into a pie segment with its center at ($cx, $cy) with the given radius, covering the angles $begin through $end.
Returns a list defining the bounding box of the text if it does fit.
AUTHOR
Tony Cook <tony@develop-help.com>
SEE ALSO
Imager::Graph(3), Imager(3), perl(1)
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 555:
You forgot a '=back' before '=head1'