Gantt Diagramm erstellen mit Python und Gnuplot

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Trash
User
Beiträge: 3
Registriert: Freitag 27. Februar 2015, 20:17

Hallo liebe Python-gemeinde! :D

Ich habe aktuell ein "kleines" Problem und bin bei der Suche nach einer Lösung über Python gestolpert... -ich bin also leider ein echter noob was Python angeht und hoffe trotzdem das ihr mich nicht gleich "verjagt" weil ich vlt. ne total dämliche Frage stelle :|

Also zu meinem Problem:

Ich möchte verschiedene Fehler von verschiedenen baugleichen Geräten grafisch darstellen, um dann schnell sehen zu können welche Fehler wann und bei welchen Geräten (zB. nur Nr. 1, Nr. 3 u 5 oder eben alle) auftreten. Das ganze möchte ich in einem sog. "Gantt" Diagramm dartellen und da kommt excel leider an seine Grenzen. Ich habe dann überlegt das Problem mit Gnuplot zu lösen, aber da der jeweilige Fehler ja nicht nur einmal auftritt geht das auch nicht so eingfach mit Bordmitteln von Gnuplot :-(
Ich habe dann aber eine recht einfach klingende Lösung mit einem Zwischenschritt über Python gefunden (siehe Link: http://wiki.mn.wtb.tue.nl/wonham/gantt.py) -und nach einigen Anlaufschwirigkeiten auch voller Freude die Demo mit Python 2.7 von der Seite zum laufen gebracht.
Ich dachte jetzt muss ich sozusagen "nur" den Inhalt der "Quell-.txt" ändern und kann so meine Daten darstellen lassen - was aber mal gar nicht klappt :(
Ich vermute das in der gantt.py kein "Datum+Zeit"-Format verwendet werden kann, und auch mit den Farbzuweisungen gibt es Probleme.

Zusammengefasst habe ich eine .txt Datei mit:

Spalte 1 = Gerätenummer
Spalte 2 = Zeit Fehler kommt (DD:MM:JJJJ hh:mm:ss)
Spalte 3 = Zeit Fehler geht (DD:MM:JJJJ hh:mm:ss)
Spalte 4 = Fehlercode

und diese Daten würde ich gern mit Hilfe der gantt.py in eine .gpl Datei umwandeln und dann mit Gnuplot als Gantdiagramm ausgeben.

Ich habe mir das wohl echt etwas zu einfach vorgestellt :| -aber jetzt bin ich schon soweit (bzw. hab mich schon einige Zeit mit Python beschäftigt), und doch noch kein Schritt weiter :-(
Ich wäre echt super froh wenn Ihr mir in irgend einer Weise weiter helfen könntet! -ich hab mir auch schon ein Buch aus der Bibliothek ausgeliehen, aber ich weiß gar nicht an welcher Stelle ich jetzt den Fehler suchen soll...

Bin für jede Hilfe Dankbar! Viele Grüße :-)
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

a fool with a tool is still a fool, www.magben.de, YouTube
Trash
User
Beiträge: 3
Registriert: Freitag 27. Februar 2015, 20:17

Hey Super vielen Dank! -das sieht ja schon ziemlich so aus wie ich das brauche...

mal sehen ob ich das damit zum laufen kriege.
Trash
User
Beiträge: 3
Registriert: Freitag 27. Februar 2015, 20:17

Hallo liebe Gemeinde,

also ich hab da nochmal eine Frage, und zwar hab ich einfach keinen Plan wie ich es hinbekomme Zeitangaben im Format DD:MM:JJJJ:hh:mm:ss aus zB. eine .txt Datei einzulesen und auf der x-Achse grafisch darzustellen...

Wie müsste ich den Code anpassen um als Zeitangeben auch Datum und Uhrzeit nutzen zu können?

Code: Alles auswählen

 # Read in activities from ganttfile: resource start stop task
    activities = []
    for line in open(ganttfile, 'r').readlines():
        line = line.split()
        resource = line[0]
        start = eval(line[1])
        stop = eval(line[2])
        task = line[3]
        activities.append(Activity(resource, start, stop, task))

Quelle: http://wiki.mn.wtb.tue.nl/wonham/gantt.py

Ich tappe leider echt noch ziemlich im dunklen :-( -vlt. hat kann ja jemand mit einem Codebeispiel helfen wo ich mir dann etwas zurecht basteln kann?

Vielen Dank! :K
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Trash: im Original wird float statt eval verwendet, was Du auch schleunigst tun solltest. Vergiß am besten, dass es eval überhaupt gibt. Der Aufruf von readlines ist überflüssig, weil File-Objekte schon über Zeilen iterieren können. Die Datei solltest Du auch wieder schließen. Um Datum und Uhrzeit nehmen zu können, mußt Du halt gnuplot sagen, dass es für die x-Werte ein Datum nehmen soll: Time/Date data.
Antworten