Balkendiagramm mit gnuplot erstellen
veröffentlicht am 05.03.2017 mit 603 Worten - Lesezeit: 3 Minute(n) in * PROGRAMME * SOFTWARE *
Inhaltsverzeichnis
Ein Balkendiagramm ist im Prinzip ein Säulendiagramm, das um 90° gekippt ist. Es eignet sich gut dafür, Mengenverhältnisse darzustellen, z. B. Verteilung der Fotos, die in einem Jahr entstanden sind, auf die dafür benutzten Objektive.
Hinzufügen weiterer Rubriken ändert dabei nicht die Breite der Grafik, es werden lediglich in der Höhe einige “Zeilen” hinzugefügt.
Die Daten
Wie bereits erwähnt liegen die Daten als Textfile objektive.txt
vor, das Format sieht folgendermaßen aus (hier am Beispiel von Fotos in einem bestimmten Zeitraum, die mit dem jeweiligen Objektiv geschossen wurden):
"2.8/400 incl. evtl. Konverter" 781
"Olympus 14-42" 629
"2.8/70-200 incl. evtl. Konverter" 382
2.8/24-70 216
4/16-35 10
"ohne Kennung" 52
Die beiden Spalten sind jeweils durch Tabulatoren getrennt. Die Benennungen dürfen keine Leerzeichen enthalten (entweder durch Unterstriche ersetzen oder in " "
einschließen).
Die Auswertung
Die Software ‘gnuplot’
Gnuplot (Eigenschreibweise: gnuplot) hatte ich an anderer Stelle bereits kurz beschrieben, sodaß ich hier gleich auf die Umsetzung des Problems eingehe.
Das Plotfile
Das Plotfile enthält alle Anweisungen an gnuplot, wie die vorliegenden Messdaten zu interpretieren und die Diagramme zu formatieren sind. Ich gebe hier den Inhalt dieser Datei abschnittsweise mit Erklärungen wieder:
# Parameter
datenfile = "objektive.txt"
bildfile = "objektive.png"
diagrammtitel = " "
xachsentitel = ""
yachsentitel = "Bild-Anzahl"
bildbreite = 600
bildhoehe = 800
Gnuplot wird zunächst in den Ausgangszustand zurückgesetzt (reset
).
Als nächstes definiere ich einige Variablen. Das hat den Hintergrund, daß ich Werte, die sich ändern können, gerne am Anfang eines Files oder scripts zusammengefaßt stehen habe, weil das übersichtlicher ist.
Der aufmerksame Leser wird hier schon feststellen, daß Höhe und Breite vertauscht sind, das Bild also im Hochformat erzeugt wird. Das hat den Hintergrund, daß gnuplot zwar Säulendiagramme (vertikale Säulen), aber keine Balkendiagramme (horizontale Balken) beherrscht, sodaß das Bild hinterher gedreht werden muß.
# Diagramm formatieren
set title diagrammtitel
set xlabel xachsentitel
set ylabel yachsentitel
unset key
unset grid
unset border
set xtics rotate by 90 right
#set ytics rotate by 90 center
set boxwidth 0.7
set style fill solid
In diesem Abschnitt wird bestimmt, wie das Diagramm aussieht:
- Diagramm-Überschrift: wird aus den Variablen übernommen, ist dort aber nur ein Leerzeichen (gibt am späteren rechten Rand etwas mehr Platz, und ich habe noch keinen Weg gefunden, wie ich die Überschrift woanders plazieren kann)
- x-Achsen-Beschriftung aus den Variablen: leer. Die Skalenteilung ist automatisch gesetzt.
- y-Achsen-Beschriftung aus den Variablen.
- Das Diagramm erhält weder Gitternetz noch Umrandung oder Legende
- Die x-Achsen-Beschriftung wird um 90° gedreht und rechtsbündig platziert an der Achse (je nach Skalierung kann das auch für die y-Achse getan werden, hier ist der Befehl auskommentiert)
- Die Balken nehmen 70% der verfügbaren Breite ein und sind vollflächig eingefärbt.
Im nächsten Abschnitt wird die Bildausgabe festgelegt: es wird eine PNG-Bilddatei erzeugt und deren Größe (in Pixeln) gesetzt, auch hier wird auf die anfangs gesetzten Variablen zurückgegriffen.
# Diagramm ausgeben
set size 1,1
set term png size bildbreite, bildhoehe
set out bildfile
plot datenfile using 2:xtic(1) with boxes
Für das Diagramm werden die Daten so gelesen:
Es werden die Werte aus der Spalte zwei aufgetragen als Säulen, als Beschriftung (xtic) wird die Spalte eins genutzt.
Ausführung und Ergebnis
gnuplot aufrufen
Im Terminal wird in das Verzeichnis gewechselt (cd /Pfad/zum/script
), in dem die beiden Files objektive.txt
(Auszählungs-Daten) und objektive.plt
(Plotfile) liegen. Der Befehl
~/Pfad/zum/script $ gnuplot objektive.plt
startet gnuplot und veranlaßt es, das Plotfile abzuarbeiten und die Ergebnisse (Diagramme) im selben Verzeichnis abzulegen:
Beispiel-Diagramm zum obigen Plotfile
Diagramm: Azahl der Fotos pro jeweiligem Objektiv
Schlußbemerkung
Die Beschreibung bezieht sich auf Linux. Gnuplot steht aber auch für Windows und MacOS zur Verfügung, sodaß dieses Verfahren, möglicherweise unter Anpassung des Plotfiles (insbesondere der Pfade), auch dort einsetzbar sein dürfte.
weitere Artikel