使用Gnuplot绘制数据

时间:2015-05-28 12:59:03

标签: csv gnuplot

我有一个csv文件包含两列

no. of packet   size 
1               60 
2               70 
3              400
4              700
.
.
.
1000000         60

第一栏是

  

包的数量

,第二列是

  

以字节为单位的数据包大小。

csv文件中的数据包总数是一百万。我需要通过以下方式绘制此数据文件的直方图:

xrange = [0, 5 , 10 , 15 ] 

表示以字节为单位的数据包大小。范围[0]表示小于100字节的包大小,[5]表示小于500字节的包字节,依此类推。

yrange = [ 10, 100, 10000, 100000000], 

表示包的数量

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

不完全记得这是如何工作的,但是我的Gnuplot in Action书中给出的用于创建直方图的命令是

bin(x,s) = s*int(x/s)
plot "data-file" using (bin(1,0.1)):(1./(0.1*300)) smooth frequency with boxes

我相信smooth frequency是对您很重要的命令,您需要弄清楚using参数应该是什么(可能使用了不同的函数)。

答案 1 :(得分:1)

这应该做的工作:

# binning function for arbitrary ranges, change as needed
bin(x) = x<100 ? 0 : x<500 ? 5 : x<2500 ? 10 : 15 

# every occurence is counted as (1)
plot datafile using (bin($2)):(1) smooth freq with boxes

我不太确定你的意思是“yrange [10 100 1000 ...]”,你想要一个标有日志的纵坐标吗?

然后只是

set xrange [1:1e6]
set logscale y

在绘图之前。