gpt4 book ai didi

gnuplot - 使用 gnuplot,如何迭代 ARG1、ARG2、ARGN?

转载 作者:行者123 更新时间:2023-12-05 03:06:08 24 4
gpt4 key购买 nike

我正在使用 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 ...

我知道可以使用 plot 进行迭代,但是是否可以对 ARGS 进行迭代?像这样的东西:

plot for [arg in ARGS] arg using (column(0)):2:3:4:xtic(1) with yerrorbars

http://www.gnuplotting.org/tag/iteration/

最佳答案

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] ...

关于gnuplot - 使用 gnuplot,如何迭代 ARG1、ARG2、ARGN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49857709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com