Gnuplot 从另一个文件中命名的文件打印数据

Gnuplot 从另一个文件中命名的文件打印数据,gnuplot,Gnuplot,我正在尝试编写一个gnuplot脚本,该脚本使用另一个文件中给定的文件名(我需要帮助)打印文件中的数据(这里没有问题)。我目前有以下情况: set terminal pngcairo set output 'interpolation.png' plot 'output.txt' u 2:3 w lines, \ 'data_1.txt' w points 这和预期的一样。但是,我生成了output.txt数据文件,该文件从data\u X.txt中获取值(并插入数据)。我的程序从

我正在尝试编写一个gnuplot脚本,该脚本使用另一个文件中给定的文件名(我需要帮助)打印文件中的数据(这里没有问题)。我目前有以下情况:

set terminal pngcairo
set output 'interpolation.png'

plot 'output.txt' u 2:3 w lines, \
     'data_1.txt' w points
这和预期的一样。但是,我生成了
output.txt
数据文件,该文件从
data\u X.txt
中获取值(并插入数据)。我的程序从stdin中读取数据文件名,因此我有一个输入文件,其中包含一次运行所需的所有数据。此输入文件的第一行是该运行的数据文件的文件名

有没有办法从同一个输入文件中获取文件名?怎么做?


换句话说,给定一个绘图脚本
interpolation.gpt
、多个数据文件
data\u X.txt
和一个输入文件
input.txt
,其中第一行命名一个
data\u X.txt
文件,我可以让
interpolation.gpt
使用
input.txt
中命名的数据文件而不必手动编辑这两个文件吗?

最简单的方法可能是从另一个脚本调用gnuplot,例如

#!/bin/bash

datafile=$(head -1 output.txt)

gnuplot << EOF
set terminal ...
set output ...
plot 'output.txt' u 2:3 w lines, \
     '$datafile' w points
EOF
#/bin/bash
数据文件=$(head-1 output.txt)

gnuplot您也可以在gnuplot中执行此操作:

datafile = system("head -1 output.txt")
plot 'output.txt' u 2:3 w lines, \
      datafile w points
反向报价替代也会奏效,我认为:

datafile = "`head -1 output.txt`"

这可能是唯一的办法,但我希望避免它。我以前在使用语句(例如,
使用1:($2>0?$2:NaN)
只绘制大于0的值)进行更复杂的操作时有过不好的经验,因为
$
由shell脚本解释,产生错误,而不是留给gnuplot。解决方法是使用1:(\$2>0?\$2:NaN)
。啊,好吧,那样的话我想就行了!这实际上更好!它让事情变得更清楚了。