89.10 Plot コマンドの for ループ (for loops in plot command)

多くの同等のファイルや関数を同時に描画する場合は、それぞれの plot コマ ンドの繰り返し (iteration) でそれを行うのが便利です。

書式:

     plot for [<variable> = <start> : <end> {:<increment>}]
     plot for [<variable> in "string of words"]

繰り返しの適用範囲 (scope) は、次のコンマ (,) かコマンドの終わり、のい ずれか先に現れたところまでです。ただし、描画する項目の前に定義式 (複数 も可) が並んでいる場合は、コンマが間に入っていてもその例外となります。 繰り返しは媒介変数モード (parametric) では機能しないことに注意してくだ さい。

例:

     plot for [j=1:3] sin(j*x)

例:

     plot for [dataset in "apples bananas"] dataset."dat" title dataset

この例では、繰り返しはファイル名と対応するタイトルの生成の両方で使われ ています。

例:

     file(n) = sprintf("dataset_%d.dat",n)
     splot for [i=1:10] file(i) title sprintf("dataset %d",i)

この例は、ファイル名で生成される文字列値関数を定義し、そのような 10 個 のファイルを同時に描画します。繰り返しの変数 (この例では 'i') は一つの 整数として扱われ、それを 2 度以上使用できます。

例:

     set key left
     plot for [n=1:4] x**n sprintf("%d",n)

この例は、関数の組を描画します。

例:

     list = "apple banana cabbage daikon eggplant"
     item(n) = word(list,n)
     plot for [i=1:words(list)] item(i).".dat" title item(i)
     list = "new stuff"
     replot

この例では、リストに従って各ステップが進行し、その各項目に対して一つの 描画が行われます。この各項目は動的に取得されますので、そのリストを変更 し、そのまま replot することができます。

例:

     list = "apple banana cabbage daikon eggplant"
     plot for [i in list] i.".dat" title i
     list = "new stuff"
     replot

この例は、整数の繰り返し変数ではなく、文字列の繰り返し変数形式を用いて いること以外は前の例と全く同じです。

<end> の整数の代わりに記号 * を使用すれば、繰り返しはすべての有効なデ ータがなくなるまでの繰り返しとなります。これは、各行に含まれるすべての 列の処理、あるいはファイル内のすべてのデータセット (2 行の空行で区切ら れる) の処理、指定に当てはまるすべてのファイルなどを一度に処理するのに 便利です。

例:

     plot for [i=2:*] 'datafile' using 1:i with histogram
     splot for [i=0:*] 'datafile' index i using 1:2:3 with lines
     plot for [i=1:*] file=sprintf("File_%03d.dat",i) file using 2 title file

竹野茂治@新潟工科大学
2023-02-13