zz :http://stackoverflow.com/questions/18150841/gdgraph-with-perl
GD::Graph with Perl
Assuming your data file is as follows,using tab delimiters.
Student Name score Jack 89 Jill 70 Sandy 40
You could do something like this,pushing your x
axis and y
axis values from your data file to arrays.
use strict; use warnings; use CGI qw( :standard ); use GD::Graph::bars; open my $fh,'<','data.txt' or die $!; my (@x,@y); while (<$fh>) { next if $. == 1; # skip header line push @x,(split /\t/)[0]; # push 'Student Names' into @x array push @y,(split /\t/)[1]; # push 'score' into @y array } close $fh; my $graph = GD::Graph::bars->new(800,800); $graph->set( x_label => 'Students',y_label => 'scores',title => 'Student Vs. scores',) or warn $graph->error; my @data = (\@x,\@y); $graph->plot(\@data) or die $graph->error(); print header(-type=>'image/jpeg'),$graph->gd->jpeg;
Giving you for example:
If you are wanting to use multiple y
axis values,assuming you have another tab delimiter column with for example score2
,you could easily do something like this.
my (@x,@y,@y2); while (<$fh>) { next if $. == 1; push @x,(split /\t/)[0]; push @y,(split /\t/)[1]; push @y2,(split /\t/)[2]; }
And change your @data
array to:
my @data = (\@x,\@y,\@y2);
And your result would be: