sub _UniMultiGrapher
{ grapher(@_, -output=>"g"); } |
sub grapher
{ &opt_default(x=>"x", y=>"y", title=>"graph",
filename=>"graph.png", type=>"columns",
style=>"lines", grapher=>"gnuplot", output=>"show");
my @args = opt_get(@_);
my $filename = opt_val("filename");
my $output = opt_val("output");
my $grapher = opt_val("grapher");
if ($grapher eq 'gnuplot' && 'MSWin32' ne $^O){
my $ref_y = shift @args;
my @command = ({"title" => opt_val("title"),
"output file" => "graph/$filename",
"x-axis label" => opt_val("x"),
"y-axis label" => opt_val("y")}, );
my $i = 1;
foreach my $ref_x (@args){
my $title = opt_val("x$i");
$title = "x$i" if ($title eq '');
push (@command,
[{"title" => $title,
"style" => opt_val("style"),
"type" => opt_val("type")},
$ref_y, $ref_x, ]
);
$i ++;
}
gnuplot(@command);
}else{
require GD::Graph::lines;
my $graph = GD::Graph::lines->new(640, 480);
my $skip = int(scalar(@{$args[0]}) / 10); $graph->set(
x_label => opt_val("x"),
y_label => opt_val("y"),
title => opt_val("title"),
x_label_skip => $skip,
);
my $i = 1;
my @legend;
while(opt_val("x$i")){
push (@legend, opt_val("x$i"));
$i ++;
}
$graph->set_legend(@legend) if (scalar(@legend));
my $gd = $graph->plot(\@args);
open(IMG, '>graph/' . $filename) or die $!;
binmode IMG;
print IMG $gd->png;
close(IMG);
}
msg_gimv("graph/$filename") if ($output eq 'show'); } |