Я пытаюсь использовать GD::Graph::histogram, чтобы создать гистограмму из некоторых данных, хранящихся в хэше. Мой код выглядит следующим образом:GD :: Graph :: гистограмма не работает должным образом
sub __gen_pval_histogram {
my ($tbl_ref, $outfile, $outdir) = @_;
my $data = [values %$tbl_ref];
foreach (@$data) {
$_ = int(-1 * log($_)/log(10));
}
my $hist = new GD::Graph::histogram(400,600);
$hist->set (x_label => "p-value",
y_label => "count",
title => "$outfile",
x_labels_vertical => 1,
bar_spacing => 0,
shadow_depth => 1,
shadowclr => 'dred',
transparent => 0,
) or warn $hist->error;
my $out = $hist->plot($data) or die $hist->error;
open my $file, ">", "$outdir/$outfile" or
die "Couldn't open $outdir/$outfile: '$?'";
binmode $file;
print {$file} $out->png;
print "Created histogram at $outdir/$outfile\n";
}
my %hash = (a => 0.0000009, b => 0.000034, c => 0.00045, d => 0.0000000012, e => 0.00000098);
__gen_pval_histogram \%hash, "hist.png", ".";
Запуск этого генерирует ошибку при вызове функции участка и формирует неправильную гистограмму:
Use of uninitialized value in string eq at /usr/lib/perl5/vendor_perl/5.12.4/GD/Graph/histogram.pm line 42.
Очевидно то не так с тем, как я передаю данные функции , Что мне делать, чтобы это исправить?
Отредактированный некоторые данные в ОП. –
Попробуйте запустить его с помощью [Carp :: Always] (http://p3rl.org/Carp::Always), чтобы узнать, как именно вы попадаете в это предупреждение. –