Graphics with gnuplot: Difference between revisions
inserted gnuplot scripts |
|||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[http://www.gnuplot.info/ Gnuplot] is included by default in the vast majority of Linux distributions and is also more flexible in certain ways | [http://www.gnuplot.info/ Gnuplot] is included by default in the vast majority of Linux distributions and is also more flexible in certain ways | ||
than GLE. | than GLE. | ||
==Plotting using temporary ASCII files== | |||
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 21: | Line 21: | ||
Result('cosxpy','grey color=j') | Result('cosxpy','grey color=j') | ||
# Prepare | # Prepare input for Gnuplot (ASCII file with data) | ||
Flow('cosxpy.z','cosxpy', | Flow('cosxpy.z','cosxpy', | ||
''' | ''' | ||
disfil number=n col=%d | disfil number=n col=%d | ||
''' % n2) | ''' % n2) | ||
Line 56: | Line 56: | ||
splot "cosxpy.z" matrix with lines notitle | splot "cosxpy.z" matrix with lines notitle | ||
</pre> | </pre> | ||
[[Image:Gnuplot_bsurf.png]] | |||
'''cosxpy_cont.gp''': | '''cosxpy_cont.gp''': | ||
Line 77: | Line 79: | ||
splot "cosxpy.z" matrix with lines notitle | splot "cosxpy.z" matrix with lines notitle | ||
</pre> | </pre> | ||
[[Image:Gnuplot_cont.png]] | |||
'''cosxpy_surf.gp''': | '''cosxpy_surf.gp''': | ||
Line 97: | Line 101: | ||
splot "cosxpy.z" matrix with pm3d notitle | splot "cosxpy.z" matrix with pm3d notitle | ||
</pre> | </pre> | ||
[[Image:Gnuplot_surf.png]] | |||
==Plotting without temporary ASCII files== | |||
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 (<tt>cosxpy_*.gp</tt>) must be modified by replacing <tt>splot "cosxpy.z"</tt> with <tt>splot "-"</tt> in their last line. |
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.