需要在gnuplot中绘制每个第n行

时间:2012-03-04 13:46:37

标签: gnuplot data-manipulation

我正在使用gnuplot并且拥有一些包含2个以上参数的数据。我不想使用3D图表。因此,我将在同一个图中将数据分成几行。

我的数据看起来像这样,在一种情况下:

    #k   #N   #time   
1   1   0.000556134 
2   1   0.00099 
4   1   0.00201011  
8   1   0.00376214  
16  1   0.00675843  
1   2   0.000717646 
2   2   0.000794106 
4   2   0.0016033   
8   2   0.0033602   
16  2   0.00795338  
1   4   0.000476448
...     ...     ... 

首先是我使用的流的数量,第二个是缓冲区大小,最后一个是此操作的时间使用。

我想要一个图表,其中缓冲区大小为X,时间Y,并且对于每个“使用的流量”,都有一行。我的代码到目前为止:

     reset
        set   autoscale # scale axes automatically
        unset log       # remove any log-scaling
        unset label     # remove any previous labels
        set xtic auto   # set xtics automatically
        set ytic auto   # set ytics automatically
        #set logscale x 2
        #set logscale y 2
        set rmargin 10
        set bmargin 5
        set tmargin 5 
        set key left top
        set title
        set term png giant size 1500, 800 crop

        set title "Adapter Stream Input" font "verdana, 20"
        set xlabel "Buffer Size" font "verdana, 20"
        set ylabel "Time in Seconds" font "verdana, 20"

        set key right bottom spacing 4 width 5 height 5 font "verdana, 15"

        set output "AdapterStreamInputTests.png"

        plot    "AdapterStreamInputTests.txt" using ($1 == 1 ? $2 : 1/0):($1 == 1 ? $3 : 1/0) title '1 Stream' with linespoints ls 1 linecolor rgb "blue", \
        "AdapterStreamInputTests.txt" using ($1 == 2 ? $2 : 1/0):($1 == 2 ? $3 : 1/0) title '2 Stream' with linespoints ls 1 linecolor rgb "red", \
        "AdapterStreamInputTests.txt" using ($1 == 4 ? $2 : 1/0):($1 == 4 ? $3 : 1/0) title '4 Stream' with linespoints ls 1 linecolor rgb "yellow", \
        "AdapterStreamInputTests.txt" using ($1 == 8 ? $2 : 1/0):($1 == 8 ? $3 : 1/0) title '8 Stream' with linespoints ls 1 linecolor rgb "brown", \
        "AdapterStreamInputTests.txt" using ($1 == 16 ? $2 : 1/0):($1 == 16 ? $3 : 1/0) title '16 Stream' with linespoints ls 1 linecolor rgb "pink"

set output

我现在的主要问题是它绘制的所有内容都是正确的但它不会在图之间划线。我在“使用”一章的命令下阅读了manual

  

应该注意的是,情节'le',使用1:2绘制'le',以及绘图   'le'使用($ 1):( $ 2)可以巧妙地说:1)如果le有一些线条   有一列,有些有两列,rst会发明x值   他们失踪了,第二个会悄悄忽略一条线   列,第三个将为具有一个的行存储未定义的值   点(因此,在带有线的图中,没有线连接点   坏点); 2)如果一行包含第一列的文本,则为rst   将错误地中止情节,但第二和第三应该   悄悄地跳过垃圾。

我认为我处于第三个类别并且没有线条,因为每个地块之间都有4个无效的情节,但我找不到任何方法来修复它。

我找不到办法让它忽略无效的情节。并且似乎没有任何我能够找到的预处理方法,可以删除未使用的图。但我可能错过了一些东西。

1 个答案:

答案 0 :(得分:6)

你有两种选择。

1。)使用显示herealternative link (wayback machine)

的每个命令

2。)使用缺少的参数,如上所述,使用?:符号来添加字符。有关伟大的inofficial FAQalternative link (wayback machine)

的详细信息