2

我有大量(超过 2000 个)数据文件,我想绘制使用 Gnuplot 的图。每个文件包含要在同一个图中绘制的多组数据。我正在使用 Perl 脚本将每个文件预处理为要由 Gnuplot 摄取的表单,并生成一个 Gnuplot 脚本,该脚本将由 Perl 的系统调用执行以生成一个 outplot 文件。每个数据文件可能包含大约 10 组数据,其中每组代表另一个参数的不同值。我想用实线绘制每个集合,但颜色不同,并在图例/键中有一个标签,代表这个其他参数的值。为了获得多行颜色,我目前正在重新格式化每个文件,以便首先设置 1(2 列),然后是两个空行,然后是第 2 组(2 列),然后是两个空行,依此类推。每组的第一行都有一个列标题。第二列标题旨在作为该集合的键的文本。在 Gnuplot 脚本的开头,我放置了一个

set key autotitle columnheader

我正在使用以下内容生成情节

plot for [i=0:9] "datafile" using 1:2:(column(-2))  with lines  lc variable

除了所有关键标签都相同并且是来自第一个数据集的标签之外,这主要是有效的。

如果我重新格式化数据文件,以便我有 11 列(1 X 和 10 Y 列)的数据并使用

plot for [i=0:9] "datafile" using 1:(column(i+2)) title columnhead(i+2) with lines

我可以得到我想要的键标签,但现在不能让每一行都用不同的颜色。

如果这些不起作用,那是另一种获取可能与一个文件不同的键标签的替代方法。

4

1 回答 1

1

您需要index明确使用来选择数据集,然后密钥是正确的。考虑数据文件

"first set"
1 1
2 2


"second set"
3 3
4 4

并用

plot for [i=0:1] "datafile" using 1:2:(column(-2)) index i title columnhead(1) lc variable

因此,对于您的数据文件,绘图命令将是

plot for [i=0:9] "datafile" using 1:2:(column(-2)) index i title columnhead(1) with lines lc variable

在我给出的示例中添加title columnhead(1)是必要的,因为 gnuplot 4.6 版在两列数据的单列标题上挣扎。在当前的开发版本中,这不再是必需的。

于 2013-07-30T07:20:58.903 回答