|
![ein Kapitel weiter](../weiter.gif)
Wir stellen uns folgendes Szenario vor. Sie sind Fondsmanager und bekommen
täglich einen gewissen Anteil Geld. Diesen Investieren sie in Fonds.
Sie wollen nun für Ihre Kunden eine wöchentliche Statistik über die Rendite
der Fonds erstellen. Stellen wir uns vor wir haben folgende CSV-Datei....
Mo:10000:8432
Di:10000:12234
Mi:20000:23120
Do:10000:12321
Fr:5000:4033
Sa:2000:1023
So:5000:4002
Diese nennen wir umsatz.csv
Folgende Bedeutung lassen wir dabei Mo:10000:8432 zukommen.
Am Montag morgens investieren sie 10000 Euro. Am Montag abend bleiben
Ihnen davon nur noch 8432 Euro.
Nun gehen wir wie folgt vor. Wir lesen die einzelnen Werte Zeilenweise ein
und trennen diese voneinander. Als nächstes erstellen wir ein Image.
Nun berrechnen wir den den Gewinn oder Verlust und geben diesen pro Tag als
Prozent an. Die einzelnen Tage geben wir als Balkendiagramm aus. Rot bedeutet
dabei Verlust und Grün Gewinn.
Am Schluss wollen wir noch einen blauen Strich als Durchschnitt der Woche verwenden.
Und so sieht unser Code dabei aus.............
#!/usr/bin/perl -w
use GD;
#neues Image
$image = new GD::Image(160,230);
$black=$image->colorAllocate(0,0,0);
$red =$image->colorAllocate(255,0,0);
$green=$image->colorAllocate(0,255,0);
$grey =$image->colorAllocate(127,127,127);
$white=$image->colorAllocate(255,255,255);
$blue =$image->colorAllocate(0,0,255);
$image->fill(1,1,$white);
$var=10;
$durchschnitt=0;
open(FH, "umsatz.csv");
while(<FH>){
($tag,$ausgaben,$einnahmen) = split(":",$_);
#Verlust/Gewinn - Prozentual
$prozent= (100/$ausgaben) * $einnahmen;
$prozent_int=100-int($prozent);
print "$tag $prozent\n";
if($prozent < 100){
$image->filledRectangle($var,$prozent,$var+20,100,$red);
$image->string(gdTinyFont,$var+2,10,$prozent_int."%",$black);
$image->string(gdSmallFont,$var+4,190,$tag,$black);
}
else{
$image->filledRectangle($var,100,$var+20,$prozent,$green);
$image->string(gdTinyFont,$var+2,10,$prozent_int."%",$black);
$image->string(gdSmallFont,$var+4,190,$tag,$black);
}
$var+=20;
$durchschnitt+=$prozent;
}
$durchschnitt/=7;
$image->line(0,$durchschnitt,219,$durchschnitt,$blue);
#Das Gittermuster....
$image->line(10,100,199,100,$black);
for($var=10; $var<160; $var+=20){
$image->dashedLine($var,0,$var,199,$black);
}
$image->char(gdSmallFont,2,95,"0",$black);
$image->char(gdSmallFont,2,50,"-",$black);
$image->char(gdSmallFont,2,150,"+",$black);
$schnitt=$durchschnitt-100;
$image->string(gdSmallFont,5,210,"Wochenschnitt : ".int($schnitt)."%",$blue);
$png = $image->png;
open(PNG,"> gd16.png") or die ("Fehler bei open.....\n");
# Einen Binär-Stream sicherstellen.
binmode PNG;
print PNG $png;
close(PNG);
Und so siehts aus :
![Bild: gd16.png](gd16.png)
Zugegeben das Beispiel hat jetzt nicht viel mit der Realität zu tun.
War auch nicht meine Absicht. Es geht mir ledeglich darum Ihnen zu
zeigen wie einfach es ist ein Balken-Diagramm zu erstellen.
Zu weiteren Anwenungsbeispielen kommen wir im nächsten Kapitel, dem Chart-Modul,
welches auf das GD-Modul aufbaut. Außerdem werden wir das GD-Modul noch öfteren
bei der CGI-Programmierung verwenden.
Wer übrigens die Programmiersprache C beherrscht, kann sich die ganzen Beispiele bei meinem C-Kurs ebenfalls ansehen.
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|