This example demonstrates using
CDML and and
parameter substitution to include icons in sector labels.
- The icons file names are added to the chart as an extra field using PieChart.addExtraField.
- The sector label format is designed to include the icon on the left, and a text block containing the text label and percentages in two lines on the the right. The format is represented using CDML, with the fields represented using parameter substitution.
- The sector label format is set into the pie chart using PieChart.setLabelFormat.
[File: perldemo/iconpie.pl] (The CGI version is available as "perldemo_cgi/iconpie.pl".)
#!/usr/bin/perl
use perlchartdir;
#The data for the pie chart
my $data = [72, 18, 15, 12];
#The depths for the sectors
my $depths = [30, 20, 10, 10];
#The labels for the pie chart
my $labels = ["Sunny", "Cloudy", "Rainy", "Snowy"];
#The icons for the sectors
my $icons = ["sun.png", "cloud.png", "rain.png", "snowy.png"];
#Create a PieChart object of size 400 x 300 pixels, with 0xffeecc as the
#background color, a black border, and 1 pixel 3D border effect
my $c = new PieChart(400, 300, 0xffeecc, 0, 1);
#Set the center of the pie at (200, 175) and the radius to 100 pixels
$c->setPieSize(200, 175, 100);
#Add a title box using Times Bold Italic/14 points as font and 0xffcccc as
#background color
$c->addTitle("Weather Profile in Wonderland", "timesbi.ttf", 14)->setBackground(
0xffcccc);
#Set the pie data and the pie labels
$c->setData($data, $labels);
#Add icons to the chart as a custom field
$c->addExtraField($icons);
#Configure the sector labels using CDML to include the icon images
$c->setLabelFormat(
"<*block,valign=absmiddle*><*img={field0}*> <*block*>{label}\n{percent}%".
"<*/*><*/*>");
#Draw the pie in 3D
$c->set3D2($depths);
#Set the start angle to 225 degrees may improve layout when the depths of the
#sector are sorted in descending order, because it ensures the tallest sector is
#at the back.
$c->setStartAngle(225);
#output the chart
$c->makeChart("iconpie.png")
|
© 2003 Advanced Software Engineering Limited. All rights reserved.