使用perl画图

前端之家收集整理的这篇文章主要介绍了使用perl画图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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: 

enter image description here

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: 

enter image description here

猜你在找的Perl相关文章