Gnuplot

Aus ELVIS-Wiki
Zur Navigation springenZur Suche springen

Für Blinde ist es meist sehr schwer sich Funktionen und speziell sich deren Verlauf zu visualisieren. Aber auch Messdaten o. ä. können nur schwer anschaulich repräsentiert werden. Abhilfe schafft hier Gnuplot, welches in der Lage ist die Ausgabe in ASCII-Art, d. h. in reiner Textform, zu zeichnen.

Warum Gnuplot

Gnuplot ist eines der wenigen Plot-Programme, welches auf „dumb-Terminals”, also textbasierte Ausgaben, plotten kann. Textbasierte Darstellungen wiederum sind für Blinde, sofern eine Braillezeile oder ein Brailledrucker zur Verfügung steht, nutzbar.

Der gleiche Plot kann dann aber noch zur Weiterverwendung in Veröffentlichungen oder zur Kommunikation mit sehenden Kollegen als Grafik exportiert werden.

Lesen der Gnuplotausgabe

Die Gnuplot-Ausgabe nutzt nicht viele Zeichen und ist relativ intuitiv; falls ASCII-Art allerdings unbekannt ist oder keine Vorstellung über das grafische Aussehen von Zeichen vorliegt, sollte man den folgenden Abschnitt lesen.

Zeichenlegende

Das "-"-Zeichen markiert eine horizontale Linie, das "|"-Zeichen eine vertikale Linie. Ein Pluszeichen "+" wird für Kreuzungspunkte von vertikalen und horizontalen Linien verwendet. Bei Gnuplot zeigen die Pluszeichen an, an welcher Stelle die Beschriftung der Achse durch die Nummern zu finden ist. Ist man z. B. gerade in der obersten Zeile, kann man auf der Braillezeile, ohne bis zum Ende zu scrollen, die Position der Beschriftungen ablesen.

Die Funktion selbst wird mit einem Stern geplottet. Das Zeichen hat grafisch keine Bedeutung, man muss sich lediglich alle Sterne miteinander verbunden vorstellen.

Hinweis: Rechts oben steht bei jeder Gnuplot-Abbildung (oft auch rechts neben dem Titel, falls einer vorhanden ist), das Zeichen, welches zum Zeichnen des Diagramms verwendet wurde.

Ferner kann Gnuplot die Größe des Diagramms (auch beinahe beliebig) skalieren, d. h. man kann Abbildungen mit einer Breite von 40 oder 80 Zeichen zeichnen. Dies sind auch die Breiten für die üblichen Braillezeilen.

Beispiel einer Funktion

Als Beispiel dient hier <math>f(x) = x*x = x^2</math>.

   100 *+------+-------+------+------+*
       **      +       +  f(x)+********
    90 +*                            *+
    80 ++*                          *++
       | **                        ** |
    70 ++ *                        * ++
    60 ++ **                      ** ++
       |   *                      *   |
    50 ++   *                    *   ++
    40 ++   **                  **   ++
       |     **                **     |
    30 ++     **              **     ++
    20 ++      **            **      ++
       |        **          **        |
    10 ++      +  ***  + ***  +      ++
     0 ++------+----******----+------++
      -10     -5       0      5       10


Beispiel mit Messdaten

Ein zweites Beispiel mit Messdaten:

   90 ++---+-----+----+----+-----+---++
      +    +     +  'data.dat'   A    +
   80 ++                             +A
      |                               |
   70 ++                             ++
      |                               |
   60 ++                   A         ++
      |                               |
      |                               |
   50 ++                             ++
      |          A                    |
   40 ++                             ++
      |                               |
   30 ++                             ++
      +    +     +    +    +     +    +
   20 A+---+-----+----+----+-----+---++
      1   1.5    2   2.5   3    3.5   4

data.dat enthält (sehr wenige) Messdaten, wie du eventuell erraten hast. Die Daten sind hier mit Punkten (repräsentiert durch „A”) dargestellt.


Schreiben eigener Gnuplot-Anweisungen

Befehle

Gnuplot versteht eine große Auswahl von Befehlen. Hier sollen nur die wichtigsten Befehle behandelt werden, welche zum Zeichnen einfacher Funktionen nötig sind, bzw. um die Ausgabe auf ASCII-Art umzustellen.

set terminal dumb
Setzt die Ausgabe auf Text. Optional können danach, getrennt durch Leerzeichen noch zwei Zahlen vermerkt werden, erste Zahl steht für die Breite der Grafik in Zeichen und die zweite Zahl steht für die Höhe in Zeilen. Als Höhe empfiehlt sich ein Wert um 20, die Breite sollte abhängig von der Braillezeile gewählt werden.
f(x) = ...
Definiert die Funktion <math>f(x)</math>. Erlaubt sind „*” für die Multiplikation, „+” bzw. „-” für die Addition bzw. Subtraktion, „/” für die Division, „%” für Modulo-Rechnung, „**” für Potenzierung und einige andere.

Ferner kann man die Wurzelfunktion durt „sqrt(x)” und die trigonometrischen Funktionen durch sin, cos, tan, acos, atan, asin, etc. Darstellen. log(x) ist der Logarithmus zur Basis <math>e</math>, log10 der Logarithmus zur Basis 10.

Eine vollständige Auflistung der Symbole kann auf http://people.duke.edu/~hpgavin/gnuplot.html gefunden werden.

plot f(x)
Zeichnet die Funktion <math>f(x)</math>, die allerdings vorher definiert worden

sein muss.

Der Plot-Befehl versteht sehr viele Optionen, gerade zur Auswertung von Daten (Messwerten) oder zum Zeichnen anderer Diagrammtypen sind viele zusätzliche Parameter vorhanden; weiterführendes in den unten verlinkten Artikeln.

Weitere Anpassungen

Es bietet sich an die Ränder anzupassen, da Gnuplot auf der linken Seiten (des Layout wegen) ein wenig Platz lässt. Verschiebt man die Grafik etwas nach links, passen mehr Zeichen auf die Braillezeile, wodurch man die Abbildung etwas detaillierter zeichnen kann.

Der rechte Rand sollte mittels set rmargin 0 auf 0 gesetzt werden, weil dies rechts den ungenutzten Platz bis zum Rand (eingestellt durch set terminal dumb xx yy) eleminiert.

Man kann optional noch den linken Rand optimieren, wobei der Platz von Hand berechnet werden muss. Der Platz setzt sich aus der Breite der Beschriftung (Stelligkeit der Zahl) und einem weiteren Leerzeichen zusammen. Um also zwei Stellen und ein Leerzeichen maximal zu erlauben, nutzt man den Befehl set lmargin 3. Für negative Zahlen braucht man noch ein Zeichen mehr.

Wiederverwendung von Anweisungen durch Auslagern

Du kannst alle häufig verwendeten Anweisungen in einer Datei speichern. So kann man sich eigene logarithmische Funktionen (wie den Logarithmus Dualis) vordefinieren, z. B.

j(x) = log(x) / log10(x)

Die Anweisungen werden in eine Textdatei geschrieben, bei der jede Zeile genau eine Anweisung beinhaltet.

Beispielsweise könnte man für die Einstellungen zur Textausgabe folgendes in eine Datei speichern:

set terminal dumb 40 20
set rmargin 0
set lmargin 4

Die Datei kann in Gnuplot mittels

gnuplot> load braille.plt

geladen werden. „gnuplot> ” ist nur der angezeigte Prompt des Programmes und muss nicht eingegeben werden.


Weiterführende Informationen

Download

Für Windows gibt es Binärpakete (Programme) unter http://www.tatsuromatsuoka.com/gnuplot/Eng/winbin/

Für Debian/Ubuntu reicht:

sudo apt-get install gnuplot

Weiterführende Artikel

Im Internet finden sich sehr viele Anleitungen zu Gnuplot, deshalb ist eine Auflistung an dieser Stelle nicht unbedingt notwendig. Für tieferes Hineinlesen sind aber

zu empfehlen.