我正在使用gnuplot脚本通过调用它来绘制一些数据:
gnuplot -p -c script.plt first.dat
script.plt看起来像这样:
set grid
set yrange [0:1000]
set xrange [-1:6]
set xtic 1 rotate 90
plot ARG1 using (column(0)):2:3:4:xtic(1) with yerrorbars
我想传递更多数据并将它们全部绘制在同一个数字上:
gnuplot -p -c script.plt first.dat second.dat
我可以通过以下方式实现:
set grid
set yrange [0:1000]
set xrange [-1:6]
set xtic 1 rotate 90
plot ARG1 using (column(0)):2:3:4:xtic(1) with yerrorbars, \
ARG2 using (column(0)):2:3:4:xtic(1) with yerrorbars
但是如何传递任意数量的数据来绘制?
gnuplot -p -c script.plt first.dat second.dat third.dat
gnuplot -p -c script.plt first.dat second.dat third.dat fourth.dat ...
我知道可以使用绘图进行迭代,但是可以迭代ARGS吗?类似的东西:
plot for [arg in ARGS] arg using (column(0)):2:3:4:xtic(1) with yerrorbars
答案 0 :(得分:1)
Gnuplot最多只支持10个ARG
变量,即ARG0, ..., ARG9
(即使ARGC
变量不受此限制)。作为解决方法,您可以将所有文件作为空白分隔字符串(假设您的文件名不包含空格字符)作为第一个参数传递
gnuplot -c script.plt "file1.dat file2.dat"
然后在Gnuplot中“解析”它:
plot for [i=1:words(ARG1)] word(ARG1, i) ...
编辑:
或者,可以将所有参数聚合到一个数组中(假设最新版本的Gnuplot),然后在plot
语句中使用该数组:
N = (9 < ARGC)?9:ARGC
array ARGV[N]
do for [i=1:N] {
eval sprintf("ARGV[%d] = ARG%d", i, i);
}
print "found ", |ARGV|, " arguments"
plot for [i=1:|ARGV|] ARGV[i] ...