【问题标题】:Plot multiple series from the same file从同一个文件中绘制多个系列
【发布时间】:2016-08-18 21:02:15
【问题描述】:

我有一个如下所示的数据文件:

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

即:date series count

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

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

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

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

我该怎么做?

注意:我使用的是 gnuplot 4.4

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    也许可以首先像这样转换输入文件 (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 命令似乎不适用于 gnuplot 4.x(或 OSX 上的 5.0p3);我得到bad data on line 1 of file animals
    • 这行得通,不过:N = system("grep -c ^date " . inputfile) -- 如果我也将范围更改为 for [i=0:N-1],显然。
    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多