[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:
(6571 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
Hier Klicken 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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:
(6568 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]
X
Hier Klicken

Aktuell

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
26.09.2018

Hochschuloe der Medien, Stuttgart
Mittwoch, 26. Sept. 2018, 19.00 - 21.00 Uhr

Vertrag

Nur auf den ersten Blick scheint dieses Thema exotisch. Aber eine neue EU-Richtlinie und deren Auswirkungen auf deutsche Gesetze werden dieses Thema auch für Publisher interessant machen. Die EU-Richtlinie "2102 zu Barrierefreiheit" besagt folgendes: Ab dem 23. September 2018 müssen alle öffentlichen Stellen ihre neuen (Office- oder PDF-) Dokumente grundsätzlich barrierefrei veröffentlichen. Im Juni wurde der Gesetzentwurf zur Umsetzung dieser Richtlinie im deutschen Bundestag vom "Ausschuss für Arbeit und Soziales" (19/2728) angenommen. Es wird also ernst für "öffentliche Stellen" und damit auch für deren Dienstleister, die mit der Umsetzung beauftragt werden. Die Richtlinie gilt nämlich nicht nur für Bundes- und Landesbehörden, sondern auch für Verbände, die im Allgemeininteresse liegende Aufgaben erfüllen. Das wären somit auch Gerichte, Polizeistellen, Krankenhäuser, Universitäten, Bibliotheken und einige mehr. Weitere Informationen findest Du hier, hier und hier. Wenn also oben genannte Auftraggeber zu Deinen Kunden zählen, solltest Du Dich vorbereiten. Und da es neben Websites auch um alle downloadbaren Dateien geht sind eben auch PDFs zukünftig barrierefrei zu erstellen. Arbeitet man in InDesign, können dort einige Vorbereitungen getroffen werden. Klaas Posselt ist der ausgewiesene Spezialist im deutschsprachigen Raum für alle Fragen rund um das Thema. Deshalb freuen wir uns, dass er uns in einem Vortrag die Grundlagen dazu vermitteln wird. Wir setzen voraus, dass Du den Umgang mit InDesign gewohnt bist, die Gründe und Vorteile von der Nutzung von Formaten kennst und weißt, wie man lange Dokumente „richtig“ aufbaut. Der Vortrag setzt bewusst DANACH ein. Inhalt des Vortrages ist der Hintergrund von „Barrierefreiheit“ und Möglichkeiten und Grenzen innerhalb von InDesign. Es wird erklärt, welche Bedeutung das kostenpflichtige PlugIn MadeToTag hat und warum und für was man es braucht. Ziel ist es den Rahmen aufzuzeigen, in dem sich das Thema „Barrierefreiheit“ in InDesign abspielt. Du weißt hinterher, wo die „Baustellen“ sind, wo Du weitergehende Infos bekommst und welchen Weg Du einschlagen musst. Am nächsten Tag veranstalten wir zwei Bootcamps, die das Thema praktisch vertiefen. "IDUGS Bootcamp #2" und "IDUGS Bootcamp #3" Klaas Posselt ist studierter Dipl.-Ing. für Druck- und Medientechnik und kam über verschiedene Anfragen zum Thema barrierefreie PDF Dokumente. Seit über 10 Jahren arbeitet er in den Bereichen Medientechnik und Publishing zwischen Medienherstellern, Druckermaschinen und digitalen Ausgabekanälen. Er schult, begleitet und unterstützt Kunden bei der Einführung und Optimierung von Publikationsprozessen und auf dem Weg zu neuen digitalen Ausgabekanälen — egal ob E-Books, barrierefreie PDFs oder Webplattformen. Als Chairman des PDF/UA Competence Center der PDF Association beteiligt er sich an der Weiterentwicklung und Verbreitung des Standards PDF/UA für barrierefreie PDF Dokumente. Diese Veranstaltung kommt nur zu Stande durch die freundliche Unterstützung von "Six Offene Systeme GmbH" -- Enterprise-Content-Management-System und Media-Asset-Management-System.

Nein

Organisator: IDUG Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailchristoph.steffens AT gmail DOT com

https://idug47.eventbrite.de

Veranstaltungen
27.09.2018

Screen IT, Uster
Donnerstag, 27. Sept. 2018, 17.30 - 20.00 Uhr

Infoveranstaltung

Das Angebot an Publishing-Software ist gross. Deshalb empfiehlt sich eine externe Beratung durch unabhängige Software-Experten aus der jeweiligen Branche. Nicht immer muss es eine teure Mietlösung sein, die nach Beendigung der Mietdauer einem nicht einmal gehört. Es gibt sehr gute und auch in der Qualität ausreichende Alternativen, ja sogar kostenlose Freeware. Lassen Sie sich an diesem Abend einmal vor Augen führen, was diese Programme können und wie viel sie kosten.

Ja

Organisator: Screen IT und pre2media

Kontaktinformation: Peter Jäger, E-Mailinfo AT pre2media DOT ch

https://www.pre2media.ch/-1/de/infoanlass/

Hier Klicken