Chart::Clicker
を初めて使用しており、ヒストグラムの作成に問題があります。次のコードを使用する:ヒストグラムのChart :: Clicker
#!/usr/bin/perl -w
use strict;
use Gtk3 -init;
use Chart::Clicker;
use Chart::Clicker::Renderer::Bar;
my $data = {
Alpha => 3,
Bravo => 1,
Charlie => 4,
Delta => 1,
Echo => 5,
};
my $counter = 0;
my $chart = Chart::Clicker->new;
my $context = $chart->get_context('default');
$context->range_axis->range(Chart::Clicker::Data::Range->new(lower => 0));
for my $value (sort keys %$data) {
$chart->add_data($value, {$counter++ => $data->{$value}});
}
my $xaxis = Chart::Clicker::Axis->new(orientation => 'horizontal', position => 'bottom');
$xaxis->{tick_values} = [0 .. $counter-1];
$xaxis->{tick_labels} = [sort keys %$data];
$context->{domain_axis} = $xaxis;
$chart->set_renderer(Chart::Clicker::Renderer::Bar->new);
$chart->legend->visible(0);
$chart->draw;
my $win = Gtk3::Window->new;
my $img = Gtk3::Image->new_from_surface($chart->driver->surface);
$win->add($img);
$win->signal_connect('delete-event' => sub{Gtk3::main_quit});
$win->show_all;
Gtk3::main;
すると、次の出力を生成します:
私がしたいことより、このような何か(グラフィカルに編集した)である:
Iドンx軸ラベルの色を気にしないでください。私が指定した順番でバーが好きなのですが、私はオーダーについてあまり気にしません。
編集:ボロディンの提案@しよう
は、次のように生成します。
それは良いでしょうが、非常に適切ではありません。現在25のデータポイントがありますが、20はゼロですので表示されませんが、X軸のスペースはまだ使用されています。 2つは左にカットされ、2つは右にカットされます(欠落したものはこのチャートでゼロになるので、他のものと同じくらい悪くはありません)。
X軸を各方向に1ティック伸ばしてみましたが、何も切り取られないため、データ値が重なることになります。あなたがしたい場合は、各データセット内のすべての5つのバーの値を含まなければならないように見える、
面白いアイデア。間違いなく良いですが、それでもなお正しいわけではありません。私はそれを試して何が起こるのスクリーンショットで質問を更新しました。 – TheAmigo