使用GNUPLOT绘制CDF,数据未排序

时间:2017-12-06 12:00:17

标签: gnuplot

嗨,我正在尝试编写一个gnuplot脚本,为另一个程序生成的数据生成CDF图。

数据如下所示:

col1    col2    col3    col4    col5
ABCD11  19.8    1.13    129 2
AABC32  14.3    2.32    109 2
AACd12  19.1    0.21    103 2

我想为第2列绘制CDF。重点是col2中的数据可能没有排序。

要编译脚本,我使用here

等在线工具

我尝试的脚本是:

set output 'out.svg'
set terminal svg size 600,300 enhanced fname 'arial' fsize 10 mousing butt solid
set xlabel "X"
set ylabel "CDF"
set style line 2 lc rgb 'black' lt 1 lw 1
set xtics format "" nomirror rotate by -10 font ", 7"
set ytics nomirror

set grid ytics
set key box height .4 width -1 box right
set nokey
set title "CDF of X"

a=0
#gnuplot 4.4+ functions are now defined as:  
#func(variable1,variable2...)=(statement1,statement2,...,return value)
cumulative_sum(x)=(a=a+x,a)
plot "data.txt" using 1:(cumulative_sum($2)) with linespoints lt -1

2 个答案:

答案 0 :(得分:1)

您可以使用cumulative平滑样式从数据中获取CDF,请参阅help smooth cumulative

plot "test.dat" u 2:(1) smooth cumulative w lp

enter image description here

答案 1 :(得分:0)

如果要使用排序值计算第二列中值的(运行)累积总和,则可以根据awk稍微扩展您的方法。更具体地说,命令是

tail -n+2 'test.txt' | sort -k2,2n | awk '{s+=$2; print NR, s}'

此处,tail剥离标题(跳过第一行),sort根据第二列按数字排序,最后awk计算累积和作为记录/项目数。