|
|
Histogramm mit den gebräuchlichen Angaben |
|
|
einfaches Histogramm |
|
|
Balkendiagramm mit Häufigkeitsverteilung |
|
|
2D-Graph, Y-Werte bilden den Durchschnitt der Eingabewerte |
|
|
Histogramm basierend auf der Trefferanzahl, Aufteilung nach der Trefferanzahl |
|
|
Histogramm basierend auf der Trefferanzahl |
Die beiden nachfolgenden Beispiele erzeugen Balkendiagramme. Grundlage bilden die Log-Dateien der Paketverwaltung. Das Diagramm zeigt, wie viele Aufrufe zu Installationen, Aktualisierungen und Entfernungen von Paketen stattgefunden haben (Abbildung 2). Für den Aufruf kommt das Unterkommando matches zum Einsatz, auf das die vier Schlüsselworte Update Upgrade Install Remove folgen.

Abbildung 2: Füttern Sie Lowcharts mit den Daten zu Aktualisierungen sowie Installationen und Deinstallationen, erstellt es mit dem passenden Aufruf daraus einen Graphen.
Lowcharts zählt daraufhin alle Zeilen, in denen eines der Schlüsselworte vorkommt, und erzeugt daraus ein Balkendiagramm, wobei es jedem Begriff einen Balken zuordnet. Über der Ausgabe steht die Summe aller Treffer sowie die Information, wie viele Treffer ein rotes Quadrat repräsentiert (hier: 1 Quadrat pro Treffer).
Andere Unterkommandos erzeugen statistische Auswertungen der Daten, erfordern aber aufgrund der überschaubaren Dokumentation des Werkzeugs einige Experimente. Der Einsatz regulärer Ausdrücke sah in der Dokumentation spannend aus, führte jedoch im Test zu keinen brauchbaren Ergebnissen.
Daher zeigt das zweite Beispiel nur eine Auswertung einer Datendatei mit erfassten Werten und deren Häufigkeit (Abbildung 3) mittels des Unterkommandos hist. Über den Schalter --intervals 5 legen Sie fest, dass die Ausgabe nur fünf Zeilen umfasst.
Alternativen
Bei Bashplotlib, Termplotlib, Plotext, Termgraph und Plotille handelt es sich um kleine Python-Module, die alle sehr ähnlich funktionieren. Haben Sie Bashplotlib via Pip lokal installiert, steht es ohne weiteren Aufwand über die beiden Werkzeuge Hist und Scatter bereit. Das nachfolgende Beispiel benutzt die bereits zuvor in Abbildung 3 verwendeten Daten und generiert damit ein kleines Diagramm mittels Hist. Im Aufruf kommt zusätzlich die Option -t zum Tragen, die das Diagramm um einen Titel ergänzt (Abbildung 4).

Abbildung 4: Die Ausgabe mit Bashplotlib vermittelt ebenfalls auf den ersten Blick alle wichtigen Informationen aus den Daten.
Terminal-bar ähnelt Bashplotlib, die Art und Weise der Ausgaben beider Tools unterscheidet sich nicht groß. Plotext, Plotille und Termgraph weisen hingegen Parallelen zu Matplotlib [9] auf. Asciichart fällt in dieselbe Werkzeugkategorie, setzt aber nicht auf Python auf, sondern stattdessen auf Javascript und eignet sich damit zur Integration in eine Webseite.
Ervy benutzt ebenfalls Javascript. Es bietet mehr Möglichkeiten als Asciichart und glänzt durch Balken- und Tortendiagramme sowie verschiedene Ladebalken. Abbildung 5 zeigt die unterschiedlichen Balkentypen, die Ervy kennt.

Abbildung 5: Balkendiagramme lassen sich mit Ervy schnell erstellen. Dank Javascript als Grundlage für die Software wäre eine Integration in eine Webseite möglich.
Fazit
Ein Plot im Terminal ist keine Hexerei. Die Vielfalt der Bibliotheken und Werkzeuge erlaubt das Andocken und Integrieren in nahezu jeden Workflow auf der Kommandozeile. Bei den gängigen Distributionen fehlen die vorgestellten Werkzeuge oft in den Paketquellen, sodass ihr Einsatz etwas Handarbeit voraussetzt. Das sollte aber kein großes Hindernis darstellen, da sich der Aufwand für das Kompilieren der Werkzeuge in engen Grenzen hält. (jlu)
Danksagung
Der Auto bedankt sich bei Harald König für Rat und Anmerkungen beim Erstellen des Artikels, insbesondere zu Gnuplot.
Über den Autor
Frank Hofmann arbeitet zumeist von unterwegs aus als Entwickler, Trainer und Autor. Seine bevorzugten Arbeitsorte sind Berlin, Genf und Kapstadt. Er gehört zu den Verfassern des Buchs zum Debian-Paketmanagement.
Infos
- Fonts für Programmierer: Axel Beckert, Frank Hofmann, “Form follows function”, LU 05/2021, S. 61, https://www.linux-community.de/46063
- Aalib/Libcaca: Axel Beckert, Frank Hofmann, “Eingebildet”, LU 01/2021, S. 28, https://www.linux-community.de/45555
- Embedded Linux: https://jaycarlson.net/embedded-linux/
- Lowcharts: https://github.com/juan-leon/lowcharts/
- GNU Octave: https://octave.org
- SageMath: https://www.sagemath.org
- “Plotting Data”: https://www.datafix.com.au/BASHing/2019-06-21.html
- Rust: https://www.rust-lang.org
- Matplotlib: https://matplotlib.org
- Gnuplot: http://www.gnuplot.info
- Asciichart: https://github.com/kroitor/asciichart
- Plotext: https://github.com/piccolomo/plotext
- Plotille: https://github.com/tammoippen/plotille
- Termgraph: https://pypi.org/project/termgraph/
- Ervy: https://www.npmjs.com/package/ervy
- Terminal-bar: https://github.com/nabraham/terminal-bar
- Termplotlib: https://github.com/nschloe/termplotlib
- Bashplotlib: https://github.com/glamp/bashplotlib






