美国上市公司

亿元级外企IT培训企业

  • 全国服务监督电话400-827-0010
IT培训 > 资料库 > 图形绘制利器:Gnuplot
  • 图形绘制利器:Gnuplot

    发布:IT培训 来源:资料库 时间:2014-12-29

  • Gnuplot简介

    Gnuplot是一款非常强大的跨平台作图工具。小到画各种数学函数图,大到写作科技论文、实现各种复杂的数据公式,它都能轻松应对。秉承UNIX的优良传统,gnuplot使用纯文本作为输入,因其包含的大量命令和变量,使得其有着无与伦比的表现力。下面的两个图形,就是gnuplot的杰作:  

    对gnuplot 作图有兴趣的同学,可以参考其官网的手册,其中有大量的范例。

    时序图的绘制—使用Gnuplot http://www.linuxidc.com/Linux/2014-08/104930.htm

    Tpcc-MySQL测试并使用Gnuplot生成图表 http://www.linuxidc.com/Linux/2014-03/98566.htm

    RH442攻略之Gnuplot  http://www.linuxidc.com/Linux/2014-03/98405.htm

    Ubuntu下应用Gnuplot进行数据的可视化 http://www.linuxidc.com/Linux/2011-12/50358.htm

    利用oprofile分析fortran并用Gnuplot画图的shell脚本 http://www.linuxidc.com/Linux/2011-04/34497.htm

    Ubuntu下安装Gnuplot 4.6.0  http://www.linuxidc.com/Linux/2014-09/106297.htm

    插入一点业务背景

    我前面有篇文章介绍了一键搭建blackhole从库的工具,其中提到,blackhole从库的一个用途是作为某种分析程序的数据源。实际上,微博相关的几个关键数据指标,包括用户、关注、博文、转发、评论、私信等,都搭建了对应的black hole从库,我们的分析程序会定期解析binlog,来分析用户在某个时段的活跃程度。为了得到近乎适时的统计数据,我采用crontab每隔5分钟在blackhole从库上执行一次flush logs,紧接着分析被切割的日志。这样就可以立即得到粒度为5分 的用户活跃统计数据,再保存到数据库中,用各种方法展现,环比、同比、平均值等,都可以很容易的获得。

    利用gnuplot作图

    有了数据之后,采用rrdtool、excel、google API等都可以作图。我的需求是,每天上午10点,定时邮件发送前一天的统计数据,并附上直观的图形说明。最终,我选择采用gnuplot来作图。 附数据如下(数据非真实数据。一共是7列,其 日期和时间整体作为一列,别混淆):

    2012-10-13 03:45:16    1893    61564  28476  37180  265190  8794
    2012-10-13 03:50:16  1823    60016  27296  38648  276206  8753
    2012-10-13 03:55:15  1606    58628  26688  32292  262998  8377
    2012-10-13 04:00:15  1539    57988  25628  36472  249984  8079
    2012-10-13 04:05:14  1641    58552  25432  35064  233832  7493
    2012-10-13 04:10:16  1731    59808  25108  36348  235218  6909
    2012-10-13 04:15:15  1720    56444  24124  38072  228382  6892
    2012-10-13 04:20:15  1680    53952  23088  38480  233300  6742
    2012-10-13 04:25:14  1582    53600  22420  37072  232974  6477
    2012-10-13 04:30:16  1531    53560  22612  37896  229090  6168

    作图的脚本如下:


    #!/usr/bin/gnuplot
    set terminal png #输出格式为png文件
    set output "image_output_file.png"  #指定数据文件名称
    set title "KPI"
    set ylabel 'net added count'
    set yrange [0:700000] #设置Y轴的范围

    set key right top height 3 spacing 2  #设置图例
    set border 3 lt 3 lw 2  #这会让你的坐标图的border更好看
    set grid #显示网格
    set key box #它把图例用一个box装起来
    set xtics nomirror rotate #只需要一个x轴
    set ytics mirror #只需要一个y轴
    set mytics 5 #可以增加分刻度
    set mxtics 1

    set pointsize 0.4 #点的像素大小
    set datafile separator '\t' #数据文件的字段用\t分开

    #注意表的数据导出的时候默认是按照tab来分隔的
    set xdata time #x轴代表时间
    set timefmt "%Y-%m-%d %H:%M:%S"  #数据文件中时间的格式
    set format x "    %Y-%m-%d %H:%M"    #x坐标轴显示的数据

    #设置图像的大小 为标准大小的2倍
    set size 2.3,2
    plot 'unit_data.txt' using 1:2 w lp lt 1 lw 2 title "第二列", 'unit_data.txt' using 1:3 w lp lt 2 lw 2 pt 7 title "第三列", 'unit_data.txt' using 1:4 w lp lt 3 lw 2 title "第四列", 'unit_data.txt' using 1:5 w lp lt 4 lw 2 title "第五列", 'unit_data.txt' using 1:6 w lp lt 5 lw 2 title " 六列", 'unit_data.txt' using 1:7 w lp lt 6 lw 2 title "第七列"

    执行脚本,脚本会读取unit_data.txt中的数据,以第一列(日期和时间)作为x轴,第2到7列作为y轴显示出6条不同的曲线,如下图:

  • 上一篇:图形绘制利器:Gnuplot

    下一篇:图解Git

2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56