Spezielles Markieren eines Punktes im Gnuplot

5

Angenommen, ich möchte ein Diagramm zeichnen und auf dem Diagramm einige wichtige Punkte anzeigen. Wie mache ich das in gnuplot? Zum Beispiel möchte ich in der Grafik von y = x 2 (2,4) und (4,16) zeigen.


quelle

Antworten:

10

Ich halte die obige Antwort nicht für sehr hilfreich, da die erste Google-Ergebnismethode beim Schreiben äußerst unbefriedigend ist.

Es nutzt die Fähigkeit von gnuplot, stdout zu lesen, um Daten zu generieren

plot "< echo '1 2'"

setzt einen einzelnen Datenpunkt an den Punkt x = 1, y = 2.

Dies hat mehrere Nachteile, die es nahezu unbrauchbar machen.

Erstens gibt es keine gute Möglichkeit, Variablen an diese Methode zu übergeben, da beide Arten von Anführungszeichen bereits verwendet werden. Die Verwendung von Makros zum Übergeben von Variablen in sprintf-Anweisungen ist daher deaktiviert, da eine dritte Art von Anführungszeichen erforderlich wäre.

Zweitens muss der Befehl plot ausgeführt werden, um den Punkt ins Leben zu rufen. Dies bedeutet, dass wenn es mehr als einen Punkt gibt, den ich plotten möchte, ich Plotanweisungen an die Hauptplotanweisung anhängen muss. Wenn ich dies auf irgendeine Art und Weise mit Skripten tun möchte, anstatt nur als explizite Liste, muss ich wieder ein Makro ausführen, was, wie ich bereits betont habe, für diese Technik nicht funktioniert.

Gnuplot verfügt über zwei Techniken, die für die Erzeugung eines einzelnen Punktes viel besser geeignet sind.

Wenn Sie nur eine Markierung an einem Punkt benötigen, können Sie den Objekttyp gnuplot verwenden, um einen Kreis an dem Punkt zu zeichnen, z

set object circle at <x>,<y> size <r>

wo <x>und <y>sind die Koordinaten des Punktes und <r>ist die Größe des zu zeichnenden Kreises. Der Kreis kann wie jedes Gnuplot-Objekt gefärbt, gefüllt, transparent usw. werden.

Zweitens, wenn Sie wirklich einen Marker mit einem bestimmten Punktstil benötigen, können Sie den labelBefehl gnuplot verwenden . Durch Setzen des Beschriftungstextes auf leer und Zuweisen eines Punkttyps wird ein Punkt an der angegebenen Koordinate gezeichnet, z.

set label <i> "" at <x>,<y> point pointtype <n>

legt einen Punkt mit Tag - Index <i>am Punkt x=<x>, y=<y>mit dem pointtype <n>(in Verzug WXT Terminal, n = 1 rote Kreuze, n = 2 ist grün Saltires, n = 3 blaue Sternchen, etc ... sind)

Auf diese Weise können mehrere zu plottende Punkte festgelegt und ein separater Plotbefehl für eine andere Funktion ausgegeben werden, ohne die Plotanweisung mit allen einzelnen zu plottenden Punkten überladen zu müssen.

KDN
quelle
1

Zuerst müssen Sie die zu zeichnende Funktion definieren, f()z. B. das Exponentiationssymbol verwenden **. Zeichnen Sie zwei Diagramme, eines für Ihre Funktion und eines für die wichtigen Punkte. Geben Sie dann die Daten Ihrer Punkte 4 16und ein 2 4. Sie können mit beenden e.

f(x) = x ** 2
plot f(x), '-' with points
4 16
2 4
e

Jetzt können Sie Ihr Rendering so anpassen, wie Sie es möchten.

IamaTacos
quelle