首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >gnuplot中的循环结构?

gnuplot中的循环结构?
EN

Stack Overflow用户
提问于 2013-02-19 06:32:52
回答 6查看 130K关注 0票数 86

有没有什么方法可以迭代地从多个文件中检索数据,并将它们绘制在gnuplot的同一张图上。假设我有像data1.txt、data2.txt……data1000.txt这样的文件,每个文件都有相同的列数。现在我可以写下这样的东西-

代码语言:javascript
复制
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部件。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-19 07:18:19

确实有(在gnuplot 4.4+中):

代码语言:javascript
复制
plot for [i=1:1000] 'data'.i.'.txt' using 1:2 title 'Flow '.i

可以将变量i解释为变量或字符串,因此可以执行以下操作

代码语言:javascript
复制
plot for [i=1:1000] 'data'.i.'.txt' using 1:($2+i) title 'Flow '.i

如果您想要使线彼此偏移。

在gnuplot命令行中输入help iteration以获取更多信息。

另外,请务必查看@DarioP对do for语法的回答;这将使您更接近于传统的for循环。

票数 100
EN

Stack Overflow用户

发布于 2013-07-26 22:53:40

还可以看看从gnuplot4.6开始的do { ... }命令,因为它非常强大:

代码语言:javascript
复制
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
}

http://www.gnuplotting.org/gnuplot-4-6-do/

票数 90
EN

Stack Overflow用户

发布于 2015-01-30 23:32:07

我有所有的脚本。p

代码语言:javascript
复制
set ...
...
list=system('ls -1B *.dat')
plot for [file in list] file w l u 1:2 t file

这里最后两行是原生的,而不是启发式的。然后我跑

代码语言:javascript
复制
$ gnuplot -p all.p

*.dat更改为您拥有的文件类型,或添加文件类型。

下一步:添加到~/.bashrc这一行

代码语言:javascript
复制
alias p='gnuplot -p ~/./all.p'

然后把你的文件all.p放到你的主目录中,瞧。您可以通过键入p和enter来绘制任何目录中的所有文件。

我更改了命令,因为它不起作用。以前它包含list(i)=word(system(ls -1B *.dat),i)

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14946530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档