在gnuplot中循环遍历数组

时间:2013-09-03 12:09:53

标签: arrays loops for-loop gnuplot

此问题与Loop structure inside gnuplot?answer DarioP有关。

gnuplot 4.6介绍了do命令。我如何使用它来循环一个例如文件和颜色的数组?什么是正确的语法?

colors = "red green #0000FF"
files = "file1 file2 file3"

do for [i=1:3] {
  plot files(i).".dat" lc colors(i)
}

1 个答案:

答案 0 :(得分:38)

如果要将所有文件放在一个图中,则需要使用plot for[...(自4.4版本起支持)。使用plot循环使用多个do for命令(仅从版本4.6开始支持)仅适用于multiplot模式。

以下两种解决方案都在一个图中绘制所有数据,但在迭代中略有不同。

第一个解决方案使用word在绘图时直接从字符串中提取单词。

colors = "red green #0000FF"
files = "file1 file2 file3"
plot for [i=1:words(files)] word(files, i).'.dat' lc rgb word(colors, i)

第二个解决方案更改linetype,然后直接在单词列表上迭代而不是使用索引。

colors = "red green #0000FF"
files = "file1 file2 file3"
set for [i=1:words(colors)] linetype i lc rgb word(colors, i)
plot for [file in files] file.'.dat'