This is very similar to the Bar graph maker. But this one will do a Pie chart. The same parameters apply.
cols are the names of the values
vals are the corrisponding values
title is optional on this.
#!/usr/bin/perl
#################################################################
# Author Joseph Harnish big_joe1008@yahoo.com #
# Date 5/1/2001 #
# #
# This script is a wrapper for GD::Graph::Bars for use on #
# web pages. It is a quicky that is used inside of an #
# IFRAME.
+ #
# #
# Usage: piegraph.pl?cols=A,B,C&vals=1,2,3 #
# It is required to have a "cols" and a "vals" but there are #
# options you can also add. These options are: #
+
# title
+ #
#################################################################
use GD::Graph::pie;
use CGI;
my $q = new CGI;
my $cols = $q->param("cols");
my $title = $q->param("title");
my $vals = $q->param("vals");
my @col = split(/\,/, $cols);
my @val = split(/\,/, $vals);
my $temp;
# Test the values comming in.
foreach (@val) {
$temp += $_;
}
if($temp != 100){
print $q->header;
print "<h1>Error: The values must add up to 100</h1>Your total was
+$temp<br>\n";
exit;
}
if($#col != $#val){
print $q->header;
print "<b><h1>Error: Parameters are not balanced</h1></b>";
exit;
}
#create and display the graph
my $graph = new GD::Graph::pie(200,200);
my @data = ([@col], [@val]);
$graph->set(title => "$title") if($title ne '');
$graph->set_label_font('ARIAL.TTF', 24);
$graph->set_value_font('ARIAL.TTF', 24);
print $q->header("image/png");
binmode STDOUT;
print $graph->plot(\@data)->png;
There is an interesting module called Apache::GD::Graph which can make bar charts, pie graphs, area charts, ... just by using a virtual location on the Apache-server and providing the data to be shown in the URL.
Just search CPAN or use ppm.
Still your program remains interesting, if you want to get down to making the graphs yourself.
Count Zero
"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law