Difference between revisions of "Graphics with gnuplot"
m |
|||
(4 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 103: | Line 103: | ||
[[Image:Gnuplot_surf.png]] | [[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 15: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
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
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.