有没有什么方法可以迭代地从多个文件中检索数据,并将它们绘制在gnuplot的同一张图上。假设我有像data1.txt、data2.txt……data1000.txt这样的文件,每个文件都有相同的列数。现在我可以写下这样的东西-
plot "data1.txt" using 1:2 title "Flow 1", \
"data2.txt" using 1:2 title "Flow 2", \
.
.
.
"data1000.txt" using 1:2 title "Flow 6"
但这真的很不方便。我想知道是否有一种方法可以遍历gnuplot中的plot部件。
发布于 2013-02-19 07:18:19
确实有(在gnuplot 4.4+中):
plot for [i=1:1000] 'data'.i.'.txt' using 1:2 title 'Flow '.i
可以将变量i
解释为变量或字符串,因此可以执行以下操作
plot for [i=1:1000] 'data'.i.'.txt' using 1:($2+i) title 'Flow '.i
如果您想要使线彼此偏移。
在gnuplot命令行中输入help iteration
以获取更多信息。
另外,请务必查看@DarioP对do for
语法的回答;这将使您更接近于传统的for
循环。
发布于 2013-07-26 22:53:40
还可以看看从gnuplot4.6开始的do { ... }
命令,因为它非常强大:
do for [t=0:50] {
outfile = sprintf('animation/bessel%03.0f.png',t)
set output outfile
splot u*sin(v),u*cos(v),bessel(u,t/50.0) w pm3d ls 1
}
发布于 2015-01-30 23:32:07
我有所有的脚本。p
set ...
...
list=system('ls -1B *.dat')
plot for [file in list] file w l u 1:2 t file
这里最后两行是原生的,而不是启发式的。然后我跑
$ gnuplot -p all.p
将*.dat
更改为您拥有的文件类型,或添加文件类型。
下一步:添加到~/.bashrc这一行
alias p='gnuplot -p ~/./all.p'
然后把你的文件all.p
放到你的主目录中,瞧。您可以通过键入p和enter来绘制任何目录中的所有文件。
我更改了命令,因为它不起作用。以前它包含list(i)=word(system(ls -1B *.dat),i)
。
https://stackoverflow.com/questions/14946530
复制相似问题