2012-06-21 3 views
1

Я пытаюсь использовать 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. 

Очевидно то не так с тем, как я передаю данные функции , Что мне делать, чтобы это исправить?

+0

Отредактированный некоторые данные в ОП. –

+1

Попробуйте запустить его с помощью [Carp :: Always] (http://p3rl.org/Carp::Always), чтобы узнать, как именно вы попадаете в это предупреждение. –

ответ

0

Линия 42 в GD :: Graph :: Гистограмма относится к параметру histogram_type, который по умолчанию должен быть Count, но выглядит как по умолчанию не работает.

Так что попробуйте включить

histogram_type => 'count', 
Смежные вопросы