next up previous contents index
Next: Linetypes, colors, and styles Up: Gnuplot Previous: Inline data and datablocks   Contents   Index

Iteration

[r][rt][width=3in,keepaspectratio]figure_newsyntax Version 4.6 of gnuplot introduced command iteration and block-structured if/else/while/do constructs. See if (p. [*]), while (p. [*]), and do (p. [*]). Simple iteration is possible inside plot or set commands. See plot for (p. [*]). General iteration spanning multiple commands is possible using a block construct as shown below. For a related new feature, see the summation (p. [*]) expression type. Here is an example using several of these new syntax features:
     set multiplot layout 2,2
     fourier(k, x) = sin(3./2*k)/k * 2./3*cos(k*x)
     do for [power = 0:3] {
         TERMS = 10**power
         set title sprintf("%g term Fourier series",TERMS)
         plot 0.5 + sum [k=1:TERMS] fourier(k,x) notitle 
     }
     unset multiplot

Iteration is controlled by an iteration specifier with syntax


    for [<var> in "string of N elements"]

or


    for [<var> = <start> : <end> { : <increment> }]

In the first case 4#4var5#5 is a string variable that successively evaluates to single-word substrings 1 to N of the string in the iteration specifier. In the second case 4#4start5#5, 4#4end5#5, and 4#4increment5#5 are integers or integer expressions.

The scope of an iteration variable is private to that iteration. You cannot permanently change the value of the iteration variable inside the iterated clause. If the iteration variable has a value prior to iteration, that value will be retained or restored at the end of the iteration. E.g. the following clause will iterate 10 times, after which i is again "A".


    i = "A"
    do for [i=1:10] { i=10 }


next up previous contents index
Next: Linetypes, colors, and styles Up: Gnuplot Previous: Inline data and datablocks   Contents   Index
Autobuild 2017-07-01