Gnuplot:使用循环绘制编号文件

时间:2018-10-11 13:36:46

标签: gnuplot

我想绘制名为“ 0.txt”,“ 1.txt”,“ 2.txt”等的数据文件。

我的剧本脚本如下:

  

为[i = 0:9] {

     

设置xrange [-0.5:7.5]

     

设置范围[-0.5:7.5]

     

设置术语pngcairo大小1280,720

     

设置输出.i。“。png”

     

用图像绘制.i。“。txt”矩阵

     

设置项x11

     

}

.i。是i的占位符,从0开始,增加到9。错误消息是:“第8行:无效的表达式”

您看到错误或有想法吗?

3 个答案:

答案 0 :(得分:1)

使用sprintf设置字符串格式:

set xrange [-0.5:7.5]
set yrange [-0.5:7.5]
set term pngcairo size 1280,720

do for [i=0:9] {
    set output sprintf("%d.png", i)
    plot sprintf("%d.txt", i) matrix with image
}

答案 1 :(得分:0)

首先,您应该删除set term x11,只需要设置一次终端即可。 第二,将所有常量参数移到循环外-它们根本不会改变。

我使用类似的gnuplot文件,但是,我使用另一个提供一组输入值的外部脚本。对于文件名,我有几乎相同的命令,并且效果很好。出于某种原因,您的版本无法像这样运行,所以我对其进行了一些修改:

set term pngcairo size 1280,720
set xrange [-0.5:7.5]
set yrange [-0.5:7.5]
do for [i=0:9]{
  set output "".i.".png"
  plot "".i.".txt" matrix with image
}

我已经对其进行了测试(gnuplot 5.2补丁程序级别4),它可以正确生成一些所需的输出。

答案 2 :(得分:0)

我的声誉不足,无法发表评论;但有一个duplicate question here

gnuplot 4.6中引入了

'Do for'循环,因此请确保您拥有现代版本。 (也应该在评论中)。

在这里,我将添加一个在循环外定义字符串的解决方案:

filename(i) = sprintf("%d.txt",i)

do for [i=1:2]{
 set output "i.png"
 plot filename(i) matrix with image
}