csv nach png

15. Oktober 2019

Je größer die Datenmengen, desto schneller kommt Excel & Co. an seine Grenzen. Deutlich schneller geht es mit gnuplot. Ehe die große Menge an Daten von gnuplot prozessiert werden kann, muss diese aufbereitet werden. Oft finden sich im Kopfbereich der CSV-Datei Informationen über den Messverlauf. Beginn, Ende, Messschritte, etc. Da diese Information für die grafische Aufbereitung nicht von Belang ist, werden solche Zeilen einfach entfernt. Übrig bleiben z.B. folgende Daten.

Voltage [V];Current [A];Time [ms];
5.0;0.2;17:30:01:001
5.0;0.21;17:30:01:002
5.0;0.22;17:30:01:003
5.0;0.21;17:30:01:004
...

Die Spannung bleibt im Laufe der Messung konstant und die absolute Uhrzeit ist nicht von Interesse. Deshalb reicht es völlig die zweite Spalte mittels awk zu extrahieren.

$ awk -F\; '{OFS=";";print $2}' MessreiheOhneHeader.csv > MessreiheAufbereitet.csv

Gnuplot stört sich noch an der Spaltenüberschrift (Current [A]), daher muss diese noch entfernt werden, ehe es mit den Daten arbeiten kann. Anschließend kann gnuplot gestartet werden und die Einstellungen händisch gesetzt werden oder man verpackt das Setzen der Einstellungen in ein Skript.

$ cat plot.sh 
#!/bin/sh

if [ $# -ne 7 ]; then
	echo "usage: $0 title xlabel ylabel xsize ysize csv png"
#	echo "example: $0 \"Titel 1\" \"x label\" \"y label\" 1920 1080 input.csv output.png"
	exit 1
fi

gnuplot -e "set grid; set title '$1';set xlabel '$2';set ylabel '$3';set term png size $4, $5;set key off;set output '$7'; plot '$6'"

Der Skriptaufruf sieht beispielsweise so aus

$ ./plot.sh "Titel der Grafik" "Zeit [ms]" "Strom [A]" 1920 1080 MessreiheAufbereitet.csv Grafik.png

und der Plot so.

Datenplot

dotfiles

6. April 2023

Screenshots nach PDF

9. Dezember 2021

PDFs + OCR

7. Oktober 2020