如何在gnuplot中遍历ARG1、ARG2……ARGN命令行参数?
在gnuplot中遍历多个输入数据文件绘制同图
刚好我之前也碰到过类似的需求,gnuplot其实内置了很方便的参数遍历机制,完全不用手动一个个写ARG1、ARG2...
你只需要修改脚本,利用gnuplot的ARGCOUNT内置变量和plot for循环语法,就能自动处理任意数量的传入数据文件。直接用下面这个修改后的脚本替换你的原脚本就行:
set grid set yrange [0:1000] set xrange [-1:6] set xtic 1 rotate 90 # 自动遍历所有传入的数据文件 plot for [i=1:ARGCOUNT] ARG[i] using (column(0)):2:3:4:xtic(1) with yerrorbars title ARG[i]
关键说明:
ARGCOUNT是gnuplot自带的变量,会自动统计你在命令行传入的参数(也就是脚本后面跟的所有数据文件)的数量plot for [i=1:ARGCOUNT]会循环处理每个参数,ARG[i]就是第i个传入的数据文件title ARG[i]会把每个数据集的图例设置为对应的文件名,这样你能清楚区分不同的数据来源- 如果你想让每个数据集的样式(颜色、线条)不一样,可以在plot命令末尾加
linecolor i或者linestyle i,比如:plot for [i=1:ARGCOUNT] ARG[i] using (column(0)):2:3:4:xtic(1) with yerrorbars title ARG[i] linecolor i
使用方式:
和你原来的调用方式一样,只是可以传入任意多个数据文件:
gnuplot -p -c script.plt first.dat second.dat third.dat ...
这样所有文件的数据都会被绘制在同一张图里,完全不用手动修改脚本适配文件数量。
内容的提问来源于stack exchange,提问作者tompreston
相关产品推荐
相关产品推荐

