2

GD :: Graph :: histogramを使用して、ハッシュに格納されているデータからヒストグラムを作成しようとしています。私のコードは次のようになります。

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.

明らかに、関数にデータを渡す方法に問題があります。これを修正するにはどうすればよいですか?

4

1 に答える 1

2

GD :: Graph :: Histogramの42行目は、パラメーターhistogram_typeを参照しています。これは、デフォルトでCountに設定する必要がありますが、デフォルトでは機能しないようです。

だから含めるようにしてください

histogram_type => 'count',
于 2013-02-11T14:44:06.223 に答える