3

我将 Gnuplot 与脚本和数据文件一起使用。

在我的脚本中有一个命令;

设置标题“废话标题在这里”

是否可以从数据文件中获取该字符串?例如,这样我就可以使用包含许多数据文件的单个脚本,因为数据文件将包含绘图的标题。

4

2 回答 2

5

我不确定这在纯 gnuplot 中是否容易做到,但这里有一个使用包装 bash 脚本的解决方案。plotscript.sh data.dat您可以通过在命令行调用来使用该脚本。

#!/bin/bash

my_title=$(head -n 1 $1 | sed 's/^# \(.*\)/\1/')

echo "set terminal postscript enhanced color
set output 'plot.eps'

set title '$my_title'
plot '$1' u 1:2" | gnuplot

要使脚本可用,请将代码放入文本文件并chmod +x在其上运行。如果您告诉我标题的格式,我可以尝试定制脚本以匹配它。此脚本假定标题是这种格式的数据文件的第一行:

# mytitle

1 4
2 5
3 2
于 2012-06-10T15:24:57.353 回答
2

您可以使用反向替换...例如

set title "`head -1 datafile.dat`"

但是,这并不能完全得到您想要的,因为反向替换是在字符串操作之前完成的(您不能将数据文件名指定为字符串)。但是,宏在反向替换之前被扩展。

我的测试数据文件看起来像:

"this is the title"
10 20
20 30
30 40

我的测试脚本看起来像:

DATAFILE="datafile.dat"
set macro
TI='`head -1 '.DATAFILE.'`'  #macro: Single quotes are important here to prevent expansion of backtics.
set title @TI
plot DATAFILE u 1:2 title columnhead(1)

请注意,如果您的标题在数据文件中没有用双引号括起来,则需要添加它们以使生成的set title命令有效。(您可以将它们添加到宏或数据文件中)

于 2012-06-10T15:23:00.883 回答