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: 
本文详细介绍了如何使用Perl语言结合GD::Graph库进行图表绘制,通过实例展示了如何从数据文件中读取信息并生成条形图。文章还提到了如何处理多y轴值的情况,以及在绘图过程中设置轴标签、标题等关键步骤。
7254

被折叠的 条评论
为什么被折叠?



