Kurven mit Gnuplot abschnittsweise plotten
In manchen Fällen kann es vorkommen, dass man Funktionen nur in bestimmten Bereichen Plotten möchte. So wie z.B. in folgender Abbildung dargestellt:
Dies mit GNUplot zu erreichen ist nicht trivial:
Schlüssel zur Lösung des Problems sind Conditionals, in GNUplot
gibt es folgenden Ausdruck:
( CONDITION ? f(x) : g(x) )
Wer C oder C++ programmiert wird sicher gleich erkennen worum es sich hier handelt.
CONDITION sind Bedingungen der Art x<1 und der Ausdruck sagt nun: Ist die Bedingung
erfuellt so gilt f(x) wenn nicht g(x). Weiter können Bedingungen
verknüpft werden x > 0.5 & x < 1 bedeutet, daß x zwischen 0.5 und
1 liegen muss.
Leider ist dies erst die halbe Miete, man will ja in manchen Gebieten nichts plotten und nicht eine andere Funktion. Hier kann man sich zunutze machen, das GNUplot Funktionen nur in dem Bereich zeichnet, in dem sie auch definiert sind (und eine reele Zahl ergeben). Die Funktion f(x)=1/0 ist nirgends definiert, also eine Lösung des Problems. Am Ende sieht der Code mit dem der Plot oben erzeugt wurde wie folgt aus:
f(x)=( x>0.5 & x<1.5 ? sin(x) : 1/0 )
g(x)=( x>1 & x<2 ? cos(x) : 1/0 )
plot [0:3] f(x) ti "sin(x)" ,g(x) ti "cos(x)"
set term gif
set outfile "plot.gif"
replot
wobei mit ti noch explizit die Namen in der Legende gesetzt wurde.