Unter der Annahme, dass Ihre Neigungsdaten in einer Datei in jeder Zeile mit einem Wert sind, können Sie es auf eine Zeichenfolge umwandeln und dann als Array. Daten werden mit dem Dienstprogramm tr
konvertiert, indem EOL-Zeichen in Leerzeichen ersetzt werden. Dann wird jeder Wert in der Funktion f(k,x)
in einem Bereich [x1:x2]
verwendet. Hier
ist Datenfile:
$ cat rob.dat
20
10
5
2
-2
-5
-10
-20
Es wird umgewandelt: 20 10 5 2 -2 -5 -10 -20
und in einer Variablen a
gespeichert.
Mit png Terminal, können Sie ein Bild, aber ohne kursiven Symbole:
set term pngcairo enh mono solid lw 1.5 font "Helvetica,14" size 600,800
set output "rob.png"
set nokey
set noborder
set noxtics
set noytics
x1=-0.1
x2=10.0
f(k,x)=(x>=x1 && x<=x2 ? k*x : 1/0)
a=system("tr '\\n' ' ' < rob.dat")
v(n)=word(a,n)
set style arrow 1 head size 0.2, 25 filled
set arrow from x1-1,0 to x2+1.,0 arrowstyle 1
set arrow from 0.,f(v(8),x2) to 0.,f(v(1),x2) arrowstyle 1
set arrow from 4.,100. to 7.,60. arrowstyle 1 front
set label "Selection interval\nfor {/:Italic q_{j+1} = k}" at 1.,120.
set label "{/:Italic U_a = r{/Symbol r}d}" at x2+0.1, f(v(1),x2)
set label "{/:Italic U_k}" at x2+0.1, f(v(2),x2)
set label "{/:Italic L_k}" at x2+0.1, f(v(3),x2)
set label "{/:Italic U_0}" at x2+0.1, f(v(4),x2)
set label "{/:Italic L_0}" at x2+0.1, f(v(5),x2)
set label "{/:Italic U_k}" at x2+0.1, f(v(6),x2)
set label "{/:Italic L_k}" at x2+0.1, f(v(7),x2)
set label "{/:Italic L_{-a} = -r{/Symbol r}d}" at x2+0.1, f(v(8),x2)
set label "{/Italic rw[j]}" at 0.3,f(v(1),x2)
set label "{/Italic k} < 0" at 2.,-130.
set style fill solid 0.3
plot [-2:12][] for [b in a] f(b,x) w l lw 2 lc rgb "black", "+" u 1:(f(v(2),$1)):(f(v(3),$1)) w filledcurves
Nachsatz eps Terminal verwenden, können Sie diejenigen bekommen (zwei erste Linien ersetzen):
set term post eps enh mono solid lw 2 font "Helvetica,30" size 6 in,9 in
set output "rob.eps"
Hallo ich lese durch Ihre Antwort äh, welche Version von gnuplot benutzt du? Ich habe die 4.0. Ich bin mir nicht sicher, ob dein Code auch für mich funktionieren würde. – user8469759
Meine Version ist 4.6. Aktualisieren Sie gnuplot, denn das ist eine ziemlich alte Version. –