Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11812[/thread]

Graphen plotten

Leser: 4


<< >> 8 Einträge, 1 Seite
tecker
 2008-05-15 19:18
#109749 #109749
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

ich würde gern Werte aus einer Datei in Form eines Diagramms darstellen. Die Datei sieht wie folgt aus:
Code: (dl )
1
2
3
4
1,0,5,0,3
2,2,34.3,0
3,0,19.1,10.04
...


Es gibt ja nun mehr als eine Variante ... Tk, GD, DBD:Chart, Gnuplot, RRDTool usw.
Ich hatte bereits eine funktionierende Variante mit Gnuplot, aber auf dem späteren System wird Solaris 10 als OS laufen (ich teste mit Debian Etch) und gnuplot will sich einfach nicht installieren lassen, abgesehen davon exisitiert dort kein X11 den gnuplot (glaube ich) vorraussetzt. Habe jedenfalls nach der 20. Paket-Abhängigkeit bei Solaris die ich nicht mehr auflösen konnte aufgehört.
Der Graph wird ja letztlich im Browser dargstellt und auf dem Server läuft u.a. rrdtool.

Welchen Weg würdet ihr bevorzugen? Es muss auch möglich sein Achsen indiviuell einzuteilen, je nach Option die vom Benutzer gewählt wird.

VG
renee
 2008-05-16 12:41
#109768 #109768
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was der beste Weg ist, hängt wie so häufig vom Anwendungsfall ab. Wo kommen die Daten her? Sollen einfach nur die Daten im Graph dargestellt werden, oder sollen Mittelwerte etc. ermittelt werden? Sind das "einmalige" Daten oder werden die Daten in regelmäßigen Abständen gesammelt? Wie liegen die Daten vor? Kommen sie "von außen" als Textdatei oder werden sie anderweitig von einem Skipt gesammelt?

Ich persönlich verwende die Chart-Module sehr gerne, habe aber auch schon mit RRDTool gearbeitet...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2008-05-16 12:46
#109770 #109770
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Ist zwar mit Kanonen auf Spatzen geschossen, aber vielleicht wäre ein Blick auf meinen Grafeneditor interessant.

-> http://www.duehl.de/christian/perl/ged.html
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2008-05-16 13:00
#109773 #109773
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Crian+2008-05-16 10:46:12--
Ist zwar mit Kanonen auf Spatzen geschossen, aber vielleicht wäre ein Blick auf meinen Grafeneditor interessant.

-> http://www.duehl.de/christian/perl/ged.html


Hi @Crian!!

Entwickelst Du den eigentlich noch weiter?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
tecker
 2008-05-16 13:34
#109777 #109777
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also,

das ganze ist eine CGI Applikation die eine Auswertung von DB-Daten erstellt. Die DB-Daten werden täglich erweitert. Der Anwender hat Optionen (z.B. Intervall und Zeitbereich) in denen die Auswertung erfolgen soll und er bekommt entsprechende Werte als Ausgabe. Diese Werte werden parallel in eine *.csv Datei geschrieben, also immer wieder neu generiert. Über einen Button besteht dann die Möglichkeit sich das ganze grafisch anzeigen zulassen. Ich würde dann gerne zwei Graphen bzw. 2 Diagramme erzeugen wo alle Werte der 2. Spalte die X-Achse und alle Werte der 3. Spalte die Y-Achse bilden des ersten Diagramms bilden und 4. und 5. Spalte entsprechend für das zweite Diagramm.
Im Grunde sollen die Graphen on Demand erstellt werden.

Spitzen-, Gesamt-und Mittelwerte wären sicherlich auch von Vorteil. In dem Falle würde es wohl Richtung RRDTool gehen. Hier fehlt mir jedoch ein wenig der Durchblick in der Umsetzung mit Perl.
renee
 2008-05-16 13:42
#109778 #109778
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
tecker
 2008-05-16 14:03
#109779 #109779
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Die Seiten hatte ich auch schon in meinen Favoriten ;)

Na gut dann versuche ich mal mein Glück mit RRDs ...
tecker
 2008-05-19 16:56
#109924 #109924
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich glaube ich bin doch noch etwas auf Hilfe angewiesen.

Bekomme es nicht so ganz hin die Daten meiner Datein in einen mit rrdtool erstellten Graphen darzustellen. Meine Datei enthält eine fortlaufende Datums-Folge als Unixtimecode:
Code: (dl )
1
2
3
4
5
6
[...]
1207717200,0,0,0,0
1207720800,0,0,49,5.40938775510204
1207724400,0,015,383.150266666667
1207728000,0,0,0,0
[...]


Jetzt sollteauch mein Graph als X-Achse die entsprechenden Datums-Werte haben aus dieser Datei (nicht der ganze Timecode, sondern Monatstag). Ich wollte zunächst eine RRD-DB erstellen:

Code: (dl )
1
2
3
4
5
6
7
if(! -f $RRD)
{RRDs::create(
$RRD,
"DS:load:GAUGE:60:0:500",
"RRA:$dst:0.5:60:500",
) or die "Cannot create rrd ($RRDs::error)";
}else{print "RRD exisitiert schon!\n";}


Dann habe ich mir aus der Datei die 1. und 3. Spalte über eine foreach-Schleife geholt, da ich die später als Graph haben möchte. Naja und den Rest sollte doch dann das RRDs::update und RRDs::graph machen ...

Code: (dl )
1
2
3
4
5
6
7
foreach (<FILE>){

chomp $_;
(my @spalten) = split (/\,/,$_);

RRDs::update($RRD, "$spalten[0]:$spalten[3]") or die "Cannot update rrd ($!)";
}


Die Werte $spalten[0] und $spalten[3] hab ich mir mal ausgeben lassen, das passt, aber er scheint sie nicht in die RRD-DB schreiben zu wollen.

Das PNG was dann erstell wird ist somit auch leer ...
Code: (dl )
1
2
3
4
5
6
7
8
RRDs::graph("/usr/lib/cgi-bin/bild.png",
"--vertical-label=TEST",
"--start= 1207713200",
"--end= 1207722200",
"DEF:myload=$RRD:load:MAX",
"LINE1:myload#FF0000")

or die "graph failed ($RRDs::error)";


Bin für jede Hilfe dankbar.
<< >> 8 Einträge, 1 Seite



View all threads created 2008-05-15 19:18.