Diese Seite funktioniert am besten mit aktiviertem JavaScript!

Daten plotten mit Gnuplot

Daten plotten mit Gnuplot

Gnuplot ist ein kostenloses und einfach geniales Programm, mit dem man Daten visualisieren kann. Egal ob es sich um mathematische Funktionen oder beispielsweise um Messwerte handelt: mit Gnuplot kannst du (fast) alles anschaulich darstellen.

Allgemein

Der ein oder andere ist vielleicht auch schon einmal auf das Problem gestoßen, dass man irgendetwas programmiert hat, womit man diverse Berechnungen durchführt und diese Berechnungen möchte man gerne visualisieren, damit man besser einschätzen kann, ob sich die Daten so verhalten, wie sie es sollten.

Gnuplot installieren und anwenden

Beispielprogramm in C

Nehmen wir doch einfach mal dieses konstruierte Beispielprogramm in C-Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

struct Data {

double x, y;

};

void Plot(struct Data center, struct Data *data, int number_of_data) {	// Diese Funktion plottet den Kreis

int i;

FILE *file;
file = fopen("C:/Test-Programm/center.txt","w");
fprintf(file, "%lf,%lf\n", center.x, center.y);	// Koordinaten des Mittelpunktes werden in Datei center.txt geschrieben
fclose(file);
file = fopen("C:/Test-Programm/output.txt","w");
for(i = 0; i < number_of_data; i++) fprintf(file, "%lf,%lf\n", data[i].x, data[i].y);	// Koordinaten der Datenpunkte werden in Datei output.txt geschrieben
fclose(file);

}

int main() {

struct Data circle[100], center;
int i, radius = 1, marker = 1;
time_t time1;

center.x = 0.0;	// X-Koordinate von Mittelpunkt
center.y = 0.0;	// Y-Koordinate von Mittelpunkt
while(1) {

	time1 = time(0);
	for(i = 0; i < 100; i++) {	// Hier werden 100 Datenpunkte für den Kreis berechnet

		circle[i].x = radius*cos(6.28*i/100);
		circle[i].y = radius*sin(6.28*i/100);

	}
	while(time(0) - time1 < 1);	// 1 Sekunde warten
	if(radius < 10 && marker) radius++;	// Radius bis auf maximal 10 vergrößern
	if(radius > 1 && !marker) radius--;	// Radius bis auf minimal 1 verkleinern
	if(radius == 10) marker = 0;	// Richtungsumkehr
	if(radius == 1) marker = 1;	// Richtungsumkehr
	Plot(center, circle, 100);	// Ruft die Funktion zum Plotten des Kreises auf

}
return 0;

}

Dieses Programm berechnet 100 Datenpunkte eines Kreises und schreibt 1x pro Sekunde die Koordinaten des Mittelpunktes in die Datei center.txt und die Koordinaten der Kreis-Punkte in die Datei output.txt. Dabei ändert sich jede Sekunde der Radius des Kreises. Wenn man dies plotten würde, könnte man einen Kreis um den Ursprung sehen, der ständig wächst und wieder schrumpft. Und genau das wollen wir jetzt machen.

Gnuplot installieren

Um die vom obigen Programm erzeugten Daten zu plotten, downloaden wir zunächst einmal Gnuplot. Danach wird das Programm ganz normal installiert.

Plotten mit Gnuplot

Das Plotten mit Gnuplot könnte garnicht viel einfacher sein. Wir erstellen uns im gleichen Verzeichnis, indem auch die Dateien mit den zu plottenden Daten liegen (also im obigen Beispiel: C:\Test-Programm\) eine weitere Datei, die wir z.B. plot.txt nennen und füllen sie mit folgendem Inhalt:

1
2
3
4
5
6
7
8
9
10
11
set xzeroaxis
set yzeroaxis
set xrange [-11:11]
set yrange [-11:11]
set datafile separator ","
plot "center.txt" using 1:2 notitle with points pointtype 7,\
"output.txt" using 1:2 notitle with points, \
"output.txt" using 1:2 notitle with lines
replot
pause 1
reread

Jetzt starten wir Gnuplot und gehen auf Open und wählen die erstellte Datei aus (dazu muss auf All Files(*.*) umgestellt werden). Jetzt müsste sich das Plot-Fenster öffnen. Die erstellte Gnuplot-Datei bewirkt, dass die Daten 1x pro Sekunde gelesen und geplottet werden. Wenn wir jetzt also unser C-Programm starten, dann sollte man einen Kreis sehen, der sich ständig vergrößert und wieder verkleinert:

Plot von Kreis mit Gnuplot

Die gesamten erstellten Dateien können hier heruntergeladen werden: Gnuplot-Beispiel.

GIF-Animation erstellen

Wie ihr seht, kann man damit auch sehr einfach GIF-Animationen erstellen: Wir müssen dazu einfach die Datei plot.txt ein bisschen ändern:

1
2
3
4
5
6
7
8
9
10
11
12
set xzeroaxis
set yzeroaxis
set xrange [-11:11]
set yrange [-11:11]
set datafile separator ","
plot "center.txt" using 1:2 notitle with points pointtype 7,\
"output.txt" using 1:2 notitle with points, \
"output.txt" using 1:2 notitle with lines
replot
pause 1
i = i+1
if(i < n) reread

Und zusätzlich erstellen wir noch eine weitere Datei namens creategif.txt:

1
2
3
4
5
6
7
8
reset
set term gif animate
set terminal gif animate delay 50
set output "animate.gif"
n = 18    #n frames
i = 0
load "plot.txt"
set output

Jetzt müssen wir nur noch unser C-Programm starten, danach öffnen wir die Datei creategif.txt mit Gnuplot und anschließend muss man nur noch einige Sekunden warten, bis das GIF fertig erstellt ist.

Die gesamten erstellten Dateien können hier heruntergeladen werden: Gnuplot-Beispiel: GIF erstellen.

Teile diese Seite
Erstellt am 01.12.2014 | Zuletzt geändert am 24.05.2018