[GastForen Archiv Perl und CGI Auslesen von Werten für Grafik

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Archiv - Archivierte Foren
Themen
Beiträge
Moderatoren
Letzter Beitrag

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

22. Mai 2003, 13:55
Beitrag # 1 von 28
Bewertung:
(8351 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich versuche zur Zeit ein Programm zu schreiben, dass ein Balkendiagramm darstellen soll. Bis jetzt habe ich nur eines geschrieben , wo die Höhe der Balken festgelegt wurde.
Ich möchte aber gerne, dass man zunächst Daten aus einer Exceltabelle ausliest und diese dann grafisch darstellt.
Ich hoffe mir kann dabei jemand helfen. Es ist wirklich wichtig.
Hier ist mein bisheriges kleines Programm. Bitte nicht lachen:-)

#!/usr/bin/perl
use strict;
use GD;
use Chart::bars;
my($obj);

$obj = Chart::Bars->new (600,400);
$obj->set ('title' => 'Foo Bar');
$obj->add_pt ('foo', 100, 100);
$obj->add_pt ('bar', 150, 150);
$obj->add_dataset ('foo', 'bar');
$obj->add_dataset (10, 10);
$obj->add_dataset (10, 10);

$obj->cgi_png ();

$obj->png ("foo2.png");

print "Content-type: text/html\n\n";


Hoffe ihr könnt damit was anfangen.

LG Muse
X

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

22. Mai 2003, 14:20
Beitrag # 2 von 28
Beitrag ID: #36426
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo muse,

zum Auslesen von Excel-Dateien gibt es diverse Perl Module
zB. diesen
http://search.cpan.org/...0.2602/ParseExcel.pm
oder diesen:
http://search.cpan.org/...imple-1.01/Simple.pm

Du kannst aber auch die Excel-Tabelle als .csv Datei speichern und diese dann einfach als Textdatei einlesen.

Bsp.:
-----------------------------
open(DAT,"<tabelle.csv");
while(<DAT>){
chomp;
@zeile = split(/;/,$_);
# mache irgendwas mit der Zeile
$spalte1 = $zeile[0];
$spalte2 = $zeile[1];
.
usw.
.
}
close(DAT);
-----------------
Das ; beim split ist der Spaltentrenner der vom Excel generiert wird.
wenn Du einen anderen verwendest, dann ersetze das ; einfach.
Grüße Oesi


als Antwort auf: [#36418]
(Dieser Beitrag wurde von oesi50 am 22. Mai 2003, 14:34 geändert)

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

22. Mai 2003, 14:43
Beitrag # 3 von 28
Beitrag ID: #36431
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi,

vielen Dank für den Tip, aber ich habe schon versucht die Daten aus der Exceltabelle auszulesen, in dem ich diese als Textdatei abgespeichert habe. Das klappt auch. Mein Problem ist nur, dass ich nicht weiß, wie ich aus diesen Daten ein Diagramm darstellen kann. Wie muss demnach die Schleife aussehen?

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

22. Mai 2003, 14:56
Beitrag # 4 von 28
Beitrag ID: #36434
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
wie sehen denn Deine Daten aus?
poste bitte nicht alle, sondern nur ein paar Zeilen als Beispiel.



als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

22. Mai 2003, 15:15
Beitrag # 5 von 28
Beitrag ID: #36437
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Werte sehen in eine CSV-Datei z.B. so aus:

10;100
11;92
12;200


Links soll die Zeit darstellen und rechts ist die Position. Diese Werte will ich jetzt in Abhängigkeit im diagramm darstellen lassen.

Hoffe du kannst mir weiterhelfen.

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

22. Mai 2003, 15:38
Beitrag # 6 von 28
Beitrag ID: #36439
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
probier mal das:
----------------------------
#!/usr/bin/perl
use strict;
use GD;
use Chart::bars;
my($obj);

$obj = Chart::Bars->new (600,400);
$obj->set ('title' => 'Foo Bar');
$obj->add_pt ('foo', 100, 100);
$obj->add_pt ('bar', 150, 150);
$obj->add_dataset ('foo', 'bar');
open(DAT,"<tabelle.csv");
while(<DAT>){
chomp;
my @zeile = split(/;/,$_);
my $spalte1 = $zeile[0];
my $spalte2 = $zeile[1];
$obj->add_dataset ($spalte1, $spalte2);
}
close(DAT);

$obj->cgi_png ();

$obj->png ("foo2.png");
-----------------------
Grüße Oesi


als Antwort auf: [#36418]
(Dieser Beitrag wurde von oesi50 am 22. Mai 2003, 15:39 geändert)

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

22. Mai 2003, 15:55
Beitrag # 7 von 28
Beitrag ID: #36441
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich habe es ausprobiert, aber es hat auch nicht geklappt.
Ich habe zwar einen Graphen gesehen, aber leider nur mit den Werten, die du durch diese zeilen erstellt hast:

$obj->add_pt ('foo', 100, 100);
$obj->add_pt ('bar', 150, 150);

Das wollte ich ja gerade nicht. Es soll nur ein Graph erstellt werden mit den Werten aus der CSV-Tabelle.
Hier nochmal eine Version mit deinen Ideen, was leider auch nicht klappt:

#!/usr/bin/perl

print "Content-type: text/html\n\n";
use Chart::Lines;

$chart=new Chart::Lines 300,200;

%attr=(
"title"=>"Position",
"grid_lines"=>1,
"transparent"=>1,
);

$chart->set(%attr);

open(DAT,"C:\\Beispiel.csv");
while(<DAT>){
chomp;
my @zeile = split(/;/,$_);
my $spalte1 = $zeile[0];
my $spalte2 = $zeile[1];
$obj->add_dataset ($spalte1, $spalte2);
}
close(DAT);
binmode STDOUT;
print $obj->png;

$chart->png ("Juhu.png");

Hast du vielleicht noch eine Idee, wie man das machen könnte?

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

22. Mai 2003, 16:26
Beitrag # 8 von 28
Beitrag ID: #36449
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
dann versuche mal diese Variante:
--------------------------------
#!/usr/bin/perl
use strict;
use GD;
use Chart::bars;

my $obj = Chart::Bars->new;
$obj->set ('title' => 'Foo Bar');
my(@daten);
open(DAT,"<tabelle.csv");
while(<DAT>){
chomp;
my ($sp1,$sp2) = split(/;/,$_);
push @{$daten[0]}, $sp1;
push @{$daten[1]}, $sp2;
}
close(DAT);

$obj->png ("foo2.png", \@daten);
---------------------------------------


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

22. Mai 2003, 16:51
Beitrag # 9 von 28
Beitrag ID: #36459
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
achso,
Du musst natürlich
"<tabelle.csv"
durch
"<C:\\Beispiel.csv"
ersetzen, sonst wird das nix
Grüße Oesi


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

23. Mai 2003, 09:46
Beitrag # 10 von 28
Beitrag ID: #36559
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Hilfe.

Jetzt wird zumindest eine Bilddatei erzeugt. Jedoch sehe ich das Bild nicht im Browser, wenn ich das Programm über den Webserver aufrufe.
Woran kann das denn liegen?
Wie kann ich das Programm gestalten, wenn ich mehrere Zahlen auslesen will und nicht nur zwei Spalten.

Hoffe du kannst mir helfen.

LG Michèle


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

23. Mai 2003, 09:53
Beitrag # 11 von 28
Beitrag ID: #36564
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
> Woran kann das denn liegen?
ersetze:
$obj->png ("foo2.png", \@daten);
durch:
$obj->cgi_png (\@daten);
und schon gehts im Browser.

>Wie kann ich das Programm gestalten, wenn ich mehrere Zahlen auslesen will und nicht nur zwei Spalten.

Welche Koordinaten außer x/y willst Du denn dann noch darstellen ?

Grüße Oesi


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

23. Mai 2003, 11:28
Beitrag # 12 von 28
Beitrag ID: #36590
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke die Darstellung im Browser hat geklappt.

Ich will aber nicht nur drei Balken darstellen, sondern auch mal mehrere.
Ich kann doch nicht die ganze Zeit auf den Index zugreifen und dann ausgeben, das wird bei 20 Werten aber eine ganz schöne Tipparbeit, wie kann ich die Schleife gestalten?

Bsp.:

for $i(0..$#daten){

push @{$daten[$i]}, $sp[$i+1];
push @{$daten[$i+1]}, $sp[$i+1];}

:-) oder so ähnlich!!!

Meinst du vielleicht es wäre sinnvoller wenn ich anstatt des Chart-Moduls das GDGraph-Modul verwende?

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

23. Mai 2003, 11:34
Beitrag # 13 von 28
Beitrag ID: #36595
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
Du willst mich wohl jetzt veralbern :-)

Wozu soll denn die .csv Datei da sein?
Grüße Oesi


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

23. Mai 2003, 12:40
Beitrag # 14 von 28
Beitrag ID: #36611
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry,

das Problem habe ich selbst behoben. Das war eine blöde Frage.
$sp1 und $sp2 steht ja nur für x und y-Achse.

Und wenn ich mehr Daten in die csv-Datei einlese, dann werden die ja durch die Schleife ausgelesen.
Was ist aber, wenn in der Datei ganz viele verschiedene Werte stehen, ich aber nur bestimmte zur Auswertung benötige?!

Wie kann ich dann auf diese zugreifen?

Nochmal zu meiner Frage, findest du es sinnvoller mit GD::Graph zu arbeiten statt mit Chart?

Ich muss nämlich eine Projektarbeit verfassen und bin mir noch nicht sicher.

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

23. Mai 2003, 13:15
Beitrag # 15 von 28
Beitrag ID: #36618
Bewertung:
(8348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi,
da ich die konkrete Aufgabenstellung nicht kenne, kann ich Dir weder zu- noch abraten.
Grüße Oesi
eine Auswahl an Modulen gibt es hier:
http://cpan.org/...html#ID18_Images_Pix


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

23. Mai 2003, 13:39
Beitrag # 16 von 28
Beitrag ID: #36624
Bewertung:
(4888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich bin leider ziemlich neu auf dem Gebiet und weiß deshalb nicht welches Modul für mich das beste ist.

Ich versuche dir mal meine Aufgabenstellung zu erläutern.
Ich soll eine grafische Auswertung programmieren.
Es liegen demnach die ganzen Daten, wie z.B Geschwindigkeit, Ertrag, Position, Zeit in einer Datenbank(Oracle).
Ich soll zum Beispiel einen grafischen Zusammenhang von Ertrag und Geschwindigkeit programmieren und als Balkendiagramm oder als Kreisdiagramm darstellen.

Zur Zeit übe ich noch in dem ich mir selbst eine Excel-Datei erstelle und aus dieser die Daten auslesen will.

So jetzt kennst du grob meine Aufgabenstellung.
Das Problem ist ja, dass ich vorher noch nie was in Perl gemacht habe und deshalb auch nicht weiß, welches Modul ich nehmen soll, geschweige denn, wie ich es anwenden soll.

ich wäre dir sehr sehr dankbar, wenn du mir helfen könntest.

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

23. Mai 2003, 14:06
Beitrag # 17 von 28
Beitrag ID: #36631
Bewertung:
(4888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi,
ich glaube nicht, das das irgendwie mit der Programmiersprache zu tun hat. Erstelle doch erst einmal ein Konzept(dazu reicht Zettel und Bleistift), wie Du die Sache allgemein angehen willst.
Da wirst du feststellen, das die Aufgabe dann in einzelne Teilaufgaben zerfällt.
zB.
- mit welchem Modell sollen die Daten analysiert werden
- wie erfolgt der Zugriff auf die Daten
- wie sollen die Daten visualisiert werden
- welche Techniken stehen zur verfügung(auch administrative Zwänge beachten)
- welche Kenntnisse stehen zur Verfügung
- was kann ich in kurzer Zeit erlernen
- für welchen Benutzerkreis soll das Projekt sein(Zielgruppe)
usw. usw. usw.
Natürlich können die Teilaufgaben wieder in Teilaufgaben zerlegt werden.
Jetzt erstellt man erstmal die Abläufe(Algorithmen)
Danach wählt man dann die entspechenden Tools(Programmiersprachen, Module,DBMS, ...) aus.
Wenn das alles steht, kann ich dir auch helfen, programmiertechnische Probleme zu lösen.

Grüße Oesi



als Antwort auf: [#36418]
(Dieser Beitrag wurde von oesi50 am 23. Mai 2003, 14:07 geändert)

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

23. Mai 2003, 14:20
Beitrag # 18 von 28
Beitrag ID: #36637
Bewertung:
(4888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Es ist sehr nett, dass du mir hilfst.

Jedoch habe ich nicht die Zeit mir über die Themen, die du angsprochen hast noch lange Gedanken zu machen.
Ich muss mit dem Projekt bald fertig sein.

Nur soviel: Die Daten sollen von einer Oracle-Datenbank geholt werden.
Die erstellte Grafik wird ein kleines Modul von einem Softwaresystem.
Demnach ist die Zielgruppe Kunden. Ich muss dieses Projekt in Perl programmieren und habe wie gesagt, keinerlei Kenntnisse zuvor gehabt.


Mehr kann ich dir leider auch nicht beantworten. Ich stehe ganz schön unter Zeitdruck und habe leider niemanden der mir hilft.
Deshalb versuche ich mir Hilfe in Foren zu suchen.

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

oesi50
  
Beiträge gesamt: 2315

23. Mai 2003, 14:32
Beitrag # 19 von 28
Beitrag ID: #36639
Bewertung:
(4888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
wenn Du so vorgehst wie beschrieben, wirst Du merken, das sich dann mit dem "Zeitdruck" viel besser umgehen lässt.
BTW.: ich kenne kein Projekt, was ohne "Zeitdruck" abläuft.
Grüße Oesi


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

SabineP
Beiträge gesamt: 7586

23. Mai 2003, 15:14
Beitrag # 20 von 28
Beitrag ID: #36654
Bewertung:
(4888 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Muse, Du kannst mit dem Perl-Modul DBI die Werte
für die X und Y - Koordinaten aus der Oracle-Datenbank "holen".

Die deutsche Übersetzung der Manpages zu DBI findest Du hier:
http://www.oreilly.de/...dger/manpage/dbi.htm

Gruß Sabine


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

26. Mai 2003, 09:38
Beitrag # 21 von 28
Beitrag ID: #36908
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dank für den Tip Sabine,
das scheint ziemlich komplieziert zu sein, aber ich werde es mir mal ansehen.
Bisher speicher ich die Datenbank als CSV oder txt Datei und lese dann die Werte aus.
Aber kannst du mir sagen, wie ich es hinbekomme, wenn in einer Datenbank ganz viele verschiedene Werte sind und ich nur bestimmt brauche um diese zu verarbeiten?

Ich arbeite bisher mit dem Chart-Modul, würde aber lieber das GD::Graph -Modul benutzen. Habe es auch installiert, aber es funktioniert nicht. Mir wurde gesagt, dass ich auch das Text Align Modul benötige. Wenn ich mir das aber runterlade,gibt es leider keine ppd Datei, um es mit dem ppm-Modul zu installieren.
Was kann ich tun?

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

SabineP
Beiträge gesamt: 7586

26. Mai 2003, 10:17
Beitrag # 22 von 28
Beitrag ID: #36918
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Muse,

>>Aber kannst du mir sagen, wie ich es hinbekomme, wenn in einer Datenbank ganz viele verschiedene Werte sind und
>>ich nur bestimmt brauche um diese zu verarbeiten?

Nein das kann ich Dir nicht sagen, da ich die Datenstruktur Deiner Datenbank nicht kenne.
Eine Datenbank besteht nicht einfach nur aus "ganz vielen Werten".

Und ich verstehe nicht wozu Du noch andere Module brauchst (GD::Graph und Text Align).

Gruß Sabine


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

26. Mai 2003, 11:45
Beitrag # 23 von 28
Beitrag ID: #36929
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
...Ich arbeite im Moment mit einer Excel-Datei, die zwei Spalten und mehrere Zeilen hat. Diese Datenbank kann ich auch auslesen und durch das Chart-Modul grafisch darstellen. Jedoch sind die Werte auf der x-Achse nicht sortiert, sondern stehen in der Reihenfolge dar, wie sie in der Datenbank stehen. Weißt du wie ich sie sortieren kann?

Hier meine Datei, als CSV:

10;300
11;100
12;150
13;200
14;30
15;50
16;100
17;90
20;110
11;220
22;360


Die linke Spalte stellt z.B. die Uhrzeit und die rechte die Position dar. Wenn ich nun aber noch Spalten mit Ertrag, Datum usw habe, wie kann ich auf die einzelnen Spalten zugreifen?

ich wollte das GDGraph-Modul, weil es mehr Möglichkeiten bietet, aber es funktioniert wie gesagt nicht und bevor ich gar nichts mache, habe ich angefangen mit dem Chart-Modul zu arbeiten.

Hoffe es ist nun verständlich was ich meine.

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

SabineP
Beiträge gesamt: 7586

26. Mai 2003, 13:40
Beitrag # 24 von 28
Beitrag ID: #36962
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Muse,

so kannst Du nach der linken Spalte (die auf der x-Achse stehen) sortieren.

#!/usr/bin/perl
use strict;
use GD;
use Chart::bars;
my $obj = Chart::Bars->new;
$obj->set ('title' => 'Foo Bar');
my(@daten,%hdaten);
open(DAT,"<tabelle.csv");
while(<DAT>){
chomp;
my ($sp1,$sp2) = split(/;/,$_);
$hdaten{$sp1} = $sp2;
}
close(DAT);
for (sort keys %hdaten) {
push @{$daten[0]}, $_;
push @{$daten[1]}, $hdaten{$_};
}
$obj->cgi_png (\@daten);

Was mir aufgefallen ist, Du hast für die Zeit 11 zwei verschiedene Werte in der Datenbank.

11;100
11;220

>> Wenn ich nun aber noch Spalten mit Ertrag, Datum usw habe, wie kann ich auf die einzelnen Spalten zugreifen?
Sollen denn die Daten in diesen Spalten auch ausgewertet werden?

>> ich wollte das GDGraph-Modul, weil es mehr Möglichkeiten bietet.
Wenn das der einzige Grund ist das GD::Graph Modul zu verwenden,
dann kannst Du auch gleich alle Module von CPAN installieren,
denn dann gibts noch mehr Möglichkeiten.

Gruß Sabine


als Antwort auf: [#36418]
(Dieser Beitrag wurde von SabineP am 26. Mai 2003, 13:43 geändert)

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

26. Mai 2003, 15:08
Beitrag # 25 von 28
Beitrag ID: #37000
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Hilfe Sabine.
Es hat fast funktioniert. ich habe eine neue CSV-Datei gemacht, wo auch Werte wie 5 und 6 auftauchen, die aber bei der Grafik ans Ende gestellt wurden. Vorher mit den alten Werten ging es aber! Woran kann das liegen?
Wärst du vielleicht so lieb und würdest mir diese Zeilen erklären?

<$hdaten{$sp1} = $sp2;
<}
<close(DAT);
<for (sort keys %hdaten) {
<push @{$daten[0]}, $_;
<push @{$daten[1]}, $hdaten{$_};

Damit ich überhaupt weiß, was ich mache.

<Sollen denn die Daten in diesen Spalten auch ausgewertet werden?

Es sollen natürlich immer nur 2 Spalten grafisch ausgewertet werden, aber in der Datenbank, aus die ich später auslesen muss, hat mehrere und wie teile ich es dem Programm mit, welche Spalten ich für die Auswertung haben möchte?

<Wenn das der einzige Grund ist das GD::Graph Modul zu verwenden,
<dann kannst Du auch gleich alle Module von CPAN installieren,
<denn dann gibts noch mehr Möglichkeiten.

Ich finde nur, dass das GDGraph-Modul mehr Möglichkeiten bietet, weil man dort z.b. auch ein Modul pie hat. Das ist jetzt aber auch nebensächlich.


LG Muse





als Antwort auf: [#36418]

Auslesen von Werten für Grafik

SabineP
Beiträge gesamt: 7586

26. Mai 2003, 18:23
Beitrag # 26 von 28
Beitrag ID: #37055
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Muse,

hier ist ein Script mit numerischer Sortierung und Spaltenauswahl:

#!/usr/bin/perl
use strict;
use GD;
use Chart::bars;
my $obj = Chart::Bars->new;
$obj->set ('title' => 'Foo Bar');
my(@daten,%hdaten);
open(DAT,"<tabelle.csv");
while(<DAT>){
chomp;
my (@zeile) = split(/;/,$_);
$hdaten{$zeile[0]} = $zeile[1]; #
}
close(DAT);
for (sort {$a <=> $b}keys %hdaten) {
push @{$daten[0]}, $_;
push @{$daten[1]}, $hdaten{$_};
}
$obj->cgi_png (\@daten);

---------------------------------------------------------
in der Zeile

$hdaten{$zeile[0]} = $zeile[1];

trägst Du die in den eckigen Klammern die zwei Spaltennummern ein,
die erste Spalte in der CSV-Datei hat immer die 0.

Zur Erklärung lies mal folgende Abschnitte in der perldoc nach:

perldoc perllol
Manipulating Arrays of Arrays in Perl

perldoc perldsc
Perl Data Structures Cookbook

perldoc -q sort
How do I sort an array by (anything)?

Gruß Sabine


als Antwort auf: [#36418]
(Dieser Beitrag wurde von SabineP am 26. Mai 2003, 18:30 geändert)

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

27. Mai 2003, 09:37
Beitrag # 27 von 28
Beitrag ID: #37124
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Hilfe Sabine.
Es hat alles soweit geklappt.
Muss jetzt nur noch versuchen zu verstehen, was einige Zeilen heißen.
Ich verstehe nämlich diese Zeilen nicht:

<push @{$daten[0]}, $_;
<push @{$daten[1]}, $hdaten{$_};

Also falls du Zeit und lust hast, wäre ich dir sehr verbunden, wenn du sie mir kurz erläutern könntest. Habe auch schon in der perldoc über sort und so nachgelesen.

LG Muse


als Antwort auf: [#36418]

Auslesen von Werten für Grafik

Anonym
Beiträge gesamt: 22827

27. Mai 2003, 10:10
Beitrag # 28 von 28
Beitrag ID: #37131
Bewertung:
(4881 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jetzt habe ich leider doch noch eine Frage.

Und zwar habe ich es jetzt doch geschafft mir das GD::Graph-Modul zu installieren und habe mein Programm auch dem angepaßt.
Wenn ich dort aber die sort-Funktion von dir schreibe, bekomme ich nur Fehlermeldungen, wie z.B. :

Argument "220"" isn't numeric in sort at GDGraph1.pl line 19.

und das mit allen werten.
Kann ich die Funktion nicht bei GDGraph anwenden?

LG Muse


als Antwort auf: [#36418]
X