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]
的范围更改为。