En supposant que vos données de pente est dans un fichier avec une valeur dans chaque ligne, vous pouvez le transformer en une chaîne et utiliser ensuite sous forme de tableau. Les données sont converties avec l'utilitaire tr
en remplaçant les caractères EOL par des espaces. Chaque valeur est ensuite utilisée dans la fonction f(k,x)
dans la plage [x1:x2]
.
Voici datafile:
$ cat rob.dat
20
10
5
2
-2
-5
-10
-20
Il est converti en: 20 10 5 2 -2 -5 -10 -20
et stocké dans une a
variable.
Avec terminal .png, vous pouvez obtenir une image, mais sans symboles italique:
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
Utilisation du terminal EPS Postscript, vous pouvez obtenir (remplacement deux premières lignes):
set term post eps enh mono solid lw 2 font "Helvetica,30" size 6 in,9 in
set output "rob.eps"
Salut, je lis à travers votre réponse euh, quelle version de gnuplot utilisez-vous? J'ai le 4.0. Je ne sais pas si votre code fonctionnerait aussi pour moi. – user8469759
Ma version est 4.6. Mettez à jour gnuplot parce que c'est une version assez ancienne. –