可以从文件中获取“set title”的字符串吗?

时间:2012-06-10 12:05:57

标签: gnuplot

我正在使用Gnuplot脚本和数据文件。

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

设置标题“blah title here”

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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命令有效。 (您可以将它们添加到宏或数据文件中)