使用perl画图

来源:互联网 发布:手机淘宝可以比价吗 编辑:程序博客网 时间:2024/05/16 00:30

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         ScoreJack                  89Jill                  70Sandy                 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


0 0
原创粉丝点击