1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#!/usr/bin/perl -w
use Chart::Composite;
print "1..1\n";
my $obj = Chart::Composite->new(600, 500);
my @legend_ary;
my ($legend, @zeile) ;
my @all_aryref;
open(OUT, ">samples/composite_1.png") or die "cannot write file samples/composite_1.png\n";
my $i =0;
my $e = 0;
my $max_val = 0;
while(<DATA>) {
if ($_ =~ /EOF/i){
last;
}
chomp;
$i++;
($legend, @zeile) = split/\|/,$_;
$obj->add_dataset(@zeile);
if ( $i != 1 ){
push @legend_ary ,$legend ; # Erste Zeile ist die x-Achsenbezeichnung und gehrt nicht zur Legende
for (0..$#zeile) { $zeile[$_] > $max_val ? $max_val = $zeile [$_] : 1 ;} # den Maximalen Wert ermitteln
}
$all_aryref[$e++] = [@zeile];
}
if ( $max_val =~ /^\d+$/ ) {
$max_val = 100 * int( 1 + $max_val/100);
} # den Scalenwert die nchste 100er Stellen setzen
# Der zweite Charttyp berdeckt immer den ersten
$obj->set( 'legend' => "top",
'legend_labels' => \@legend_ary ,
'x_ticks' => "vertical",
'composite_info'=> [ ['StackedBars', [8,7,6,5] ],
['Bars',[1,2,3,4,9] ],
],
'same_y_axes' => "true",
'y_label' => "Anzahl",
'min_val1' => 0 ,
'max_val1' => $max_val ,
'max_val2' => $max_val,
'space_bars' => 1 ,
'brush_size' => 10,
'legend' => 'bottom',
'title' => 'Composite Demo Chart',
'legend_example_height' => 'true',
'legend_example_height0..3' => '50',
'legend_example_height4..9' => '4',
);
$obj->png(\*OUT);
close OUT;
print "ok 1\n";
exit 0;
__END__
Datum|01.09.2003|02.09.2003|03.09.2003|04.09.2003
Anzahl gesamt|322|244|227|223
Anzahl Stufe 1 bis 4 gesamt|226|173|159|145
Anzahl JL|77|46|44|61
Anzahl DL|19|25|24|17
Anzahl 1. Stufe|28|22|11|27
Anzahl 2. Stufe|12|11|4|7
Anzahl 3. Stufe|50|39|55|34
Anzahl 4. Stufe|136|101|89|77
Anzahl Formulare|547|352|249|174
EOF
|