-
-
12 May 2015 08:41:33 UTC
- Distribution: Imager-Graph
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Clone git repository
- Issues (18)
- Testers (950 / 0 / 0)
- Kwalitee
Bus factor: 1- 81.59% Coverage
- License: perl_5
- Perl: v5.6.0
- Activity
24 month- Tools
- Download (257.03KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- Imager
- Test::More
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
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( data => [ $first_amount, $second_amount ], size => 350);
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. If you supply alabels
parameter, you must supply afont
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:
- show_callouts_onAll_segments()
-
Feature: allcallouts.
all labels are presented as callouts
- show_only_label_percentages()
-
Feature: labelspconly
only show the percentage, not the labels.
- show_label_percentages()
-
Feature: labelspc
adds the percentage of the pie to each label.
Inherited features:
- 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.
- outline
-
the pie segments are outlined.
- dropshadow
-
the pie is given a drop shadow.
PIE CHART STYLES
The following style values are specific to pie charts:
Controlling callouts, the
callout
option:color - the color of the callout line and the callout text.
font, size - font and size of the callout text
outside - the distance the radial callout line goes outside the pie
leadlen - the length of the horizontal callout line from the end of the radial line.
gap - the distance between the end of the horizontal callout line and the label.
inside - the length of the radial callout line within the pie.
The outline, line option controls the color of the pie segment outlines, if enabled with the
outline
feature.Under
pie
:maxsegment - any segment below this fraction of the total of the segments will be put into the "others" segment. Default: 0.01
The top level
otherlabel
setting controls the label for the "others" segment, default "(others)".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 i_planet 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:
$img = $pie->draw(data=>\@data, labels=>\@labels, style=>'fount_lin', features=>'legend');
suitable for monochrome output:
$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.
- _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)
Module Install Instructions
To install Imager::Graph, copy and paste the appropriate command in to your terminal.
cpanm Imager::Graph
perl -MCPAN -e shell install Imager::Graph
For more information on module installation, please visit the detailed CPAN module installation guide.