Gnuplot脚本不会为多个数据集生成正确的键/图例标签

时间:2013-07-29 20:00:32

标签: gnuplot

我有大量(超过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

我可以获得我想要的关键标签,但现在无法获得不同颜色的每一行。

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

1 个答案:

答案 0 :(得分: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命令将是

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在单列列头上争用两列数据。在当前的开发版本中,这不再是必要的了。