我有一个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],
表示包的数量
任何帮助都将受到高度赞赏。
答案 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
在绘图之前。