如何在脚本中读取不规则编号的数据文件以制作 gnuplot 图像?
Posted
技术标签:
【中文标题】如何在脚本中读取不规则编号的数据文件以制作 gnuplot 图像?【英文标题】:How to read in irregularly numbered data files in script to make gnuplot images? 【发布时间】:2013-10-31 12:26:52 【问题描述】:我有一个脚本(称为:anim.sh)来读取我的模拟数据,在 gnuplot 中绘制每个数据文件,并将每个数据文件保存为 .gif 文件。数据命名为:g000000, g000007, g000008, g000010....等。我的脚本读入这 4 个数据文件并在 gnuplot 中绘制一个图,然后将输出保存为 .gif 文件。我的问题是如何读取这些不规则编号的数据?我有:
do for [i=0:3]
str_num=sprintf('%03d',i) #Write integer to string
set term gif
set output 'my_output.'.str_num.'.gif'
set xr [-0.2:0.2]
set yr [-0.2:0.2]
plot 'g000'.str_num w d
如果我的文件被称为 g000000, g000001, g000002, g000003,这将正常工作,但它们不是!所以我得到一个错误:
line 8: warning: Skipping unreadable file "g000001"
line 8: No data in plot
如何添加代码以跳过丢失的文件(例如 g000001 - g000006)并继续循环?
附言实际上,我有数百个文件,而不仅仅是 4 个,所以我不想手动重命名它们。
【问题讨论】:
你上面引用的肯定不是bash script
。
抱歉,我应该只说“脚本”而不是“bash 脚本”。代码保存为 anim.sh,我在 linux 中使用 >gnuplot anim.sh 运行它
Gnuplot, how to *skip* missing data files? 的可能重复项
不,这不是那个问题的重复!
@Christoph:至少非常相似,接受的答案在这里可以工作。
【参考方案1】:
您可以生成所有文件的列表并对其进行迭代:
set terminal gif
set xrange[-0.2:0.2]
set yrange[-0.2:0.2]
filelist = system('ls g00*')
do for [file in filelist]
set output 'my_output.'.(file[2:*]).'.gif'
plot file
【讨论】:
谢谢@Christoph。完美运行! 嗨@Christoph。我还有不同的数据文件,分别命名为 s000000、s000007、s000008、s000010...等。我如何在同一个 .gif 文件中过度绘制这些(即绘制 g000000 和 s000000)? 如果你总是有g...
和 s...
文件对,那么你可以使用 filelist = system('ls g00* | tr -d "g"')
并且稍后在循环中使用 plot 'g'.file, 's'.file
。
谢谢@Christoph。如果我没有 g... 和 s... 文件对,但我的第二批文件被称为“name_no”,该怎么办。例如star000000、star000007 等?
对不起,我不明白。你的意思是你有star000000而不是s000000?以上是关于如何在脚本中读取不规则编号的数据文件以制作 gnuplot 图像?的主要内容,如果未能解决你的问题,请参考以下文章
您如何从屏幕会话中编写 gnu screen 脚本以打开新窗口并在其中运行命令?