Gnuplot 从同一文件打印多个系列

Gnuplot 从同一文件打印多个系列,gnuplot,Gnuplot,我有一个数据文件,看起来如下所示: 2016-08-16 dogs 12 2016-08-16 cats 9 2016-08-17 cats 4 2016-08-17 mice 42 2016-08-17 dogs 6 即:日期序列计数 请注意,序列在每天的顺序并不一致(可能根本不会出现) 此外,我的输入文件也没有按顺序排列的日期(尽管如果有必要,我可以使用sort来修复),并且一些日期可能会丢失(因为那天没有数据点) 我想使用gnuplot来渲染这个。X轴应显示日期;Y轴应显示计数;每个系列

我有一个数据文件,看起来如下所示:

2016-08-16 dogs 12
2016-08-16 cats 9
2016-08-17 cats 4
2016-08-17 mice 42
2016-08-17 dogs 6
即:
日期序列计数

请注意,序列在每天的顺序并不一致(可能根本不会出现)

此外,我的输入文件也没有按顺序排列的日期(尽管如果有必要,我可以使用
sort
来修复),并且一些日期可能会丢失(因为那天没有数据点)

我想使用gnuplot来渲染这个。X轴应显示日期;Y轴应显示计数;每个系列都应该有自己的线条,在图例中有标签

我知道如何从一个单独的文件中渲染每个序列,但是序列不是固定的,所以我正在寻找一些不需要的东西

我该怎么做


注意:我使用的是gnuplot 4.4

也许可以先将输入文件(
input.txt
)转换为如下格式:

sort -k2,2 -k1,1 input.txt | \
gawk '{if($2!=prev){if(NR>1){print "\n";}print "date", $2; prev=$2;}print $1,$3}' > input2.txt
在这种特殊情况下

date cats
2016-08-16 9
2016-08-17 4


date dogs
2016-08-16 12
2016-08-17 6


date mice
2016-08-17 42
然后用

datafile="input2.txt"
stats datafile

set xdata time
set timefmt '%Y-%m-%d'

N=int(STATS_blocks)-1
plot for [i=0:N] datafile index i using 1:2 w lp t columnhead(2)
产生

也许可以先将输入文件(
input.txt
)进行如下转换:

sort -k2,2 -k1,1 input.txt | \
gawk '{if($2!=prev){if(NR>1){print "\n";}print "date", $2; prev=$2;}print $1,$3}' > input2.txt
在这种特殊情况下

date cats
2016-08-16 9
2016-08-17 4


date dogs
2016-08-16 12
2016-08-17 6


date mice
2016-08-17 42
然后用

datafile="input2.txt"
stats datafile

set xdata time
set timefmt '%Y-%m-%d'

N=int(STATS_blocks)-1
plot for [i=0:N] datafile index i using 1:2 w lp t columnhead(2)
产生

stats命令似乎与gnuplot4.x(或OSX上的5.0p3)所示的不一样;我在文件anists的第1行得到了坏数据。这是有效的:
N=system(“grep-c^date.inputfile)
——如果我也将[I=0:N-1]的范围更改为
,显然。
stats
命令似乎不像gnuplot 4.x(或OSX上的5.0p3)所示那样有效;我在文件animals的第1行得到了坏数据。这是有效的:
N=system(“grep-c^date.inputfile)
——如果我也将[I=0:N-1]
的范围更改为