2017-12-01 5 views
0

I Kraft Druckfelder für verschiedene Funktionen und x und y im Bereich wie für f in dem folgende fast minimal Beispiel:Read-Zugriff gnuplot Beispieleinstellungen für die weitere Berechnung

f(x,y) = -x*y 

unset key 
set xrange [-2:2] 
set yrange [-1:1] 
set samples 40 
set isosamples 20 

delta = 2.0/41 
ds(x,y) = sqrt(1.0+f(x,y)**2) 

plot "++" using ($1):($2):(delta/ds($1,$2)):(delta*f($1,$2)/ds($1,$2)) with vectors 

Wie kann ich bei der Berechnung der delta verwenden die aktuellen Werte der internen Einstellungen wie samples und isosamples und x- und y-Bereiche, um die Längen der kleinen Pfeile an ihre gegenseitigen Abstände anzupassen, so dass Pfeile gut sichtbar sind, aber nicht überlappen?

Hintergrund ist, dass ich den obigen Code in zwei Dateien teilen möchte, die erste zu definieren f und die Bereich und Beispieleinstellungen und dann load den Rest. Der Rest als kann wieder verwendet werden, um Kraftfelder für viele Funktionen zu zeichnen.

Es wäre möglich, den Lesezugriff auf Gnuplot-Einstellungen zu umgehen, indem Sie Variablen definieren und dann xrange und yrange usw. entsprechend diesen setzen. Ich würde jedoch bevorzugen, den gnuplot eingebauten set Befehl zu verwenden, wenn das möglich ist.

Ich weiß, dass es Variablen GPVAL_X_MIN, GPVAL_X_MAX, GPVAL_Y_MIN und GPVAL_Y_MAX nach dem ersten Mal, Grundstück aufgerufen. Es wäre vorzuziehen, keine Kurve zu benötigen und nur die Einstellung aus den vorhergehenden set xrange und set yrange zu lesen.

Und gibt es eine gnuplot-definierte Variable für Samples und Isosamples? Gibt es etwas wie GPVAL_SAMPLES und GPVAL_ISOSAMPLES?

+0

Nein, diese Variablen existieren nicht, aber Sie können sie selbst definieren: 'SAMPLES = 20; Setze Beispiele SAMPLES' ... BTW, mit 'show variables GPVAL' siehst du alle Variablen die mit" GPVAL "beginnen – Christoph

Antwort

0

als schmutzige Lösung, erhalten Sie einen Hilfs leeres Grundstück, um generieren könnten diese Variablen zu initialisieren:

set terminal pngcairo enhanced 
set output 'fig.png' 

set xr [-2:2] 
set yr [-4:4] 

set multiplot 
plot 1/0 t '' 

print GPVAL_X_MIN, GPVAL_X_MAX 

plot sin(x) w l 

Allerdings scheint es viel konsequenter den Ansatz von @ Christoph in den Kommentaren vorgeschlagen zu verwenden, dh , deklariere eine benutzerdefinierte Variable und verwende sie in der Definition der Bereiche und anderer Einstellungen ...

Verwandte Themen