perl:从多个数组中绘制数据

时间:2018-07-10 20:57:08

标签: arrays perl plot

在我的perl代码中,我有几个名为'a','b','c'....'e','f'的数组。我在调用“ MyFunc”时将它们作为参数发送。在这里,我想绘制任意两个数组,例如'e'与'f'。

我以以下方式尝试(请看代码),但是我收到一条消息,指出正在执行 my $gd = $graph->plot(\@e,\@f) or die $graph->error; 命令的行中没有可用的数据点。 / p>

如何使其工作?

MyFunc(
    'a' => [0, 1,2,3,4],
    'c' => [0, -1,2,-3,6],  
    'c' => [0, 2,4,2,5],
    'd' => [0, 1,2,3,4],
    'e' => [0, 9,2,1,7],
    'f' => [-2, 5,-1,1,7],
    'g' => [5, 1,8,-2,5],
);

sub MyFunc {

use GD::Graph::lines;
my $graph = GD::Graph::lines->new;

$graph->set( 
    x_label           => 'X Label',
    y_label           => 'Y label',
    title             => 'Some simple graph',
    y_max_value       => 8,
    y_tick_number     => 8,
    y_label_skip      => 2 
) or die $graph->error;

my $gd = $graph->plot(\@e,\@f) or die $graph->error;

open(IMG, '>file.gif') or die $!;
binmode IMG;
print IMG $gd->gif;
close IMG;


};

1 个答案:

答案 0 :(得分:2)

将参数'e' => [0,9,2,1,7]传递给子例程不会自动在子例程内创建名为@e的变量。您的子例程不会对参数进行任何处理。考虑这样的事情来做您想做的事情:

sub MyFunc {

    my %params = @_;
    ...
    my $gd = $graph->plot( [$params{"e"}, $params{"f"}] ) ...
    ...
}