ChartDirector Ver 3.0 (Perl Edition)

Icon Pie Chart




This example demonstrates using CDML and and parameter substitution to include icons in sector labels.

Source Code Listing

[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")