Posts mit dem Label graph werden angezeigt. Alle Posts anzeigen
Posts mit dem Label graph werden angezeigt. Alle Posts anzeigen

Gnuplot 102 - einfacher Graph mit 2 Wertepaaren

Gnuplot kann sehr aufwendige Operationen ausführen. Am Anfang möchte ich aber vorerst die Grundlagen erklären. Wir möchten folgende Datei namens "aepfel_birnen_preise" auslesen und mit Gnuplot darstellen lassen.

# Durchschnittspreise/kg von Aepfeln und Birnen in Jahren 2000-2010
# Ausgedachte Werte!
# Spalte 1: Jahr
# Spalte 2: Aepfel
# Spalte 3: Birnen
# -----------------
2000 2.1 1.7
2001 1.9 1.65
2002 2.34 1.26
2003 1.24 1.8
2004 1.56 2.1
2005 2.13 2.04
2006 1.67 2.56
2007 1.45 2.04
2008 2.56 2.11
2009 1.76 1.99
2010 1.63 1.56


Beim Aufruf in der Gnuplot-Kommandozeile (starten durch gnuplot) müssen wir definieren, welche Spalten in welcher Beziehung stehen. Zusätzlich sollen die Punkte mit Linien verbunden sein. Zum guten Schluß soll noch erkennbar sein, welche Linie mit welchen Obstpreisen in Beziehung stehen. Das ganze wird in Gnuplot durch einen Einzeiler erledigt.
gnuplot
plot "./aepfel_birnen_preise" using 1:2 title "Aepfel" with lines, "./aepfel_birnen_preise" using 1:3 title "Birnen" with lines
Das selbe kann auch abgekürzt werden (abkürzen bis auf Anfangsbuchstaben der Befehle; filename wird beim zweiten Aufruf interpoliert (es wird der letzte benutzte file genutzt)):
plot "./aepfel_birnen_preise" u 1:2 t "Aepfel" w l, "" u 1:3 t "Birnen" w l

Als Ergebnis wird uns folgender Graph ausgegeben:

GnuPlot 101 - Graph mit Zufallszahlen

Ich möchte einen einfachen Graph mit GNUPLOT ausgeben lassen. Als Zahlenquelle wähle ich Zufallszahlen. Gnuplot erwartet pro Zeile einen Datensatz. Man kann auch andere Formatierungen nutzen, dafür müsste der Befehlssyntax aber erweitert werden. Um eine Liste mit entsprechenden Datensätzen auszugeben, erstelle ich ein kleines Skript, das 100 Zufallszahlen in eine Datei schreibt:

#!/bin/bash
# Dateinamen festlegen
l="random_1"
# Datei loeschen - Fehler unterdruecken
rm $l 2>/dev/null
# 100 Zufallszahlen erstellen
for ((i=0;i<100;i++))
do
echo $RANDOM >>$l
done

Bevor man GnuPlot nutzt, muss man es natürlich installieren (die ersten 2 Befehle sind wichtig):

sudo apt-get install gnuplot
sudo apt-get install gnuplot-doc
sudo apt-get install gnuplott-X11

Nachdem man das Programm mit gnuplot aufruft, kann man Befehle über eine Text-Konsole eingeben. Eine kleine Einführung zu den Befehlen habe ich hier gefunden.

Gestartet werden kann auch direkt über die Linux-shell.
echo 'plot "./random_1"; pause 10'|gnuplot

Oder man startet gnuplot ('gnuplot') und gibt folgendes ein (Achtung, hier habe ich den Befehl durch "with lines" ergänzt. Damit verbindet man die Punkte mit Linien; vgl. Liniendiagram):
plot "./random_1" with lines


Die Graphen können auf vielfältige Weise definiert werden. Diverse Muster stehen zur Auswahl. Eine gute Erklärung findet man auf folgender Seite.