我想绘制名为“ 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行:无效的表达式”
您看到错误或有想法吗?
答案 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
}