# Difference between revisions of "Graphics with gnuplot"

(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 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.