Graphics with gnuplot: Difference between revisions
| (2 intermediate revisions by 2 users not shown) | |||
| Line 4: | Line 4: | ||
Example SConstruct, that follows the one in the [[Graphics with GLE | GLE example]]: | Example SConstruct, that follows the one in the [[Graphics with GLE | GLE example]]: | ||
<python> | <python> | ||
from | from rsf.proj import * | ||
o1=-2 | o1=-2 | ||
| Line 108: | Line 108: | ||
<python> | <python> | ||
from | from rsf.proj import * | ||
o1=-2 | o1=-2 | ||
| Line 135: | Line 135: | ||
</python> | </python> | ||
To work with this SConstruct, the gnuplot scripts shown in the previous section (<tt>cosxpy_*.gp</tt>) must be modified by | To work with this SConstruct, the gnuplot scripts shown in the previous section (<tt>cosxpy_*.gp</tt>) must be modified by replacing <tt>splot "cosxpy.z"</tt> with <tt>splot "-"</tt> in their last line. | ||
< | |||
splot "cosxpy.z" | |||
</ | |||
< | |||
splot "-" | |||
</ | |||
Latest revision as of 22:53, 15 September 2010
Gnuplot is included by default in the vast majority of Linux distributions and is also more flexible in certain ways than GLE.
Plotting using temporary ASCII files[edit]
Example SConstruct, that follows the one in the GLE example: <python> from rsf.proj import *
o1=-2 o2=-2 n1=41 n2=41 d1=0.1 d2=0.1
Flow('cosxpy',None,
math o1=%g o2=%g n1=%d n2=%d d1=%g d2=%g
output="cos(x1*x1+x2*x2)*exp(-0.1*(x1*x1+x2*x2))"
% (o1,o2,n1,n2,d1,d2))
Result('cosxpy','grey color=j')
- Prepare input for Gnuplot (ASCII file with data)
Flow('cosxpy.z','cosxpy',
disfil number=n col=%d % n2)
- Draw surfaces
Result('cosxpy_iso','cosxpy_bsurf.gp cosxpy.z',
gnuplot | epstopdf --filter
,suffix='.pdf')
End() </python> On some systems, the actual executable is not gnuplot, but gnuplot-minimal. Another dependency is the epstopdf utility, which is a part of LaTeX installation, usually. Gnuplot scripts can render the isometric view in slightly different ways. Three examples of Gnuplot scripts, and the images produced by each, follow:
cosxpy_bsurf.gp:
set terminal postscript eps enhanced color
set output
set title "Hat function (3D)"
set xtics ("-2" 0, "-1" 10, "0" 20, "1" 30, "2" 40) out
set ytics ("-2" 0, "-1" 10, "0" 20, "1" 30, "2" 40) out
set ztics out
set zrange [-1.5:1.5]
set ztics 0.5
set xlabel "X-axis"
set ylabel "Y-axis"
set zlabel "Z-axis" offset 3,-1
set ticslevel 0.5
set palette defined (-1 "blue", 0 "white", 1 "red")
set pm3d at b
splot "cosxpy.z" matrix with lines notitle
cosxpy_cont.gp:
set terminal postscript eps enhanced color
set output
set title "Hat function (3D)"
set xtics ("-2" 0, "-1" 10, "0" 20, "1" 30, "2" 40) out
set ytics ("-2" 0, "-1" 10, "0" 20, "1" 30, "2" 40) out
set ztics out
set zrange [-1.5:1.5]
set ztics 0.5
set xlabel "X-axis"
set ylabel "Y-axis"
set zlabel "Z-axis" offset 3,-1
set ticslevel 0.5
set cntrparam levels auto 12
set contour base
set hidden3d offset 0
splot "cosxpy.z" matrix with lines notitle
cosxpy_surf.gp:
set terminal postscript eps enhanced color
set output
set title "Hat function (3D)"
set xtics ("-2" 0, "-1" 10, "0" 20, "1" 30, "2" 40) out
set ytics ("-2" 0, "-1" 10, "0" 20, "1" 30, "2" 40) out
set ztics out
set zrange [-1.5:1.5]
set ztics 0.5
set xlabel "X-axis"
set ylabel "Y-axis"
set zlabel "Z-axis" offset 3,-1
set ticslevel 0.5
set palette defined (-1 "blue", 0 "white", 1 "red")
set pm3d at bs
splot "cosxpy.z" matrix with pm3d notitle
Plotting without temporary ASCII files[edit]
Gnuplot can also read data from the standard input. Therefore there is no need to create a temporary ASCII file (cosxpy.z in the example). The SConstruct becomes even simpler, and it is more convenient, because one can use the same Gnuplot scripts to draw different data:
<python> from rsf.proj import *
o1=-2 o2=-2 n1=41 n2=41 d1=0.1 d2=0.1
Flow('cosxpy',None,
math o1=%g o2=%g n1=%d n2=%d d1=%g d2=%g
output="cos(x1*x1+x2*x2)*exp(-0.1*(x1*x1+x2*x2))"
% (o1,o2,n1,n2,d1,d2))
Result('cosxpy','grey color=j')
- Draw surface with Gnuplot
Result('cosxpy_iso','cosxpy cosxpy_bsurf.gp',
disfil number=n col=%d | /bin/cat ${SOURCES[1]} - |
gnuplot | epstopdf --filter
% n2,suffix='.pdf')
End() </python>
To work with this SConstruct, the gnuplot scripts shown in the previous section (cosxpy_*.gp) must be modified by replacing splot "cosxpy.z" with splot "-" in their last line.


