最新消息:

shell脚本利用gnuplot绘制图片

bash admin 3936浏览 0评论

我们都知道gnuplot可以绘制图片,但是时候,我们的数据是以date文件的形式存在,如何编写一个脚本帮助我们绘制出相应的图片:
以某个进程的CPU使用情况为例:

  1. cat processX_CPU_Usage.log
  2. Wed Oct 16 14:47:35 CST 2013:    Process    CPUsage(%)    Total
  3. Wed Oct 16 14:47:37 CST 2013:    1828    17    2008
  4. Wed Oct 16 14:47:39 CST 2013:    1828    17    1706
  5. Wed Oct 16 14:47:42 CST 2013:    1828    12    1689
  6. Wed Oct 16 14:47:44 CST 2013:    1828    21    1673
  7. Wed Oct 16 14:47:46 CST 2013:    1828    15    1668
  8. Wed Oct 16 14:47:48 CST 2013:    1828    8    1699
  9. Wed Oct 16 14:47:50 CST 2013:    1828    17    1699
  10. Wed Oct 16 14:47:53 CST 2013:    1828    17    2148
  11. Wed Oct 16 14:47:55 CST 2013:    1828    15    1815
  12. Wed Oct 16 14:47:57 CST 2013:    1828    32    1727
  13. Wed Oct 16 14:47:59 CST 2013:    1828    11    1669
  14. Wed Oct 16 14:48:01 CST 2013:    1828    4    1667
  15. Wed Oct 16 14:48:03 CST 2013:    1828    8    1678
  16. Wed Oct 16 14:48:05 CST 2013:    1828    16    1694
  17. Wed Oct 16 14:48:08 CST 2013:    1828    9    1669
  18. Wed Oct 16 14:48:10 CST 2013:    1828    26    1750
  19. Wed Oct 16 14:48:12 CST 2013:    1828    6    1792
  20. Wed Oct 16 14:48:14 CST 2013:    1828    14    1720
  21. Wed Oct 16 14:48:17 CST 2013:    1828    12    1800
  22. Wed Oct 16 14:48:19 CST 2013:    1828    24    1921
  23. Wed Oct 16 14:48:21 CST 2013:    1828    11    1749
  24. Wed Oct 16 14:48:23 CST 2013:    1828    9    1708
  25. Wed Oct 16 14:48:25 CST 2013:    1828    15    1665
  26. Wed Oct 16 14:48:27 CST 2013:    1828    3    1751
  27. Wed Oct 16 14:48:30 CST 2013:    1828    10    1692
  28. Wed Oct 16 14:48:32 CST 2013:    1828    15    1678
  29. Wed Oct 16 14:48:34 CST 2013:    1828    19    1708
  30. Wed Oct 16 14:48:36 CST 2013:    1828    14    1707
  31. Wed Oct 16 14:48:38 CST 2013:    1828    15    1680
  32. Wed Oct 16 14:48:40 CST 2013:    1828    18    1678
我们看到了输出是这么个情况,我们希望绘制一张简单的图片,把CPU usage的情况绘制出来:每一行的第八列是我们想要的数据,我们可以绘制一个时间序列:
  1. manu@manu-hacks:~/code/shell/gnuplot$ cat work.sh
  2. #!/bin/sh
  3. file=$1
  4. field=$2
  5. yfield=`cat $file |awk ’{if(NR==1) print $”’$field”’}’`
  6. title=`basename $file`
  7. if [ $# -eq 2 ]
  8. then
  9.     echo ”
  10.     set terminal pngcairo lw 2
  11.     set title ”$title”
  12.     set ylabel ”$yfield”
  13.     set output ‘./output/$title-$yfield.png’
  14.     plot ”$file” using $field w lp pt 7 title ”$yfield”
  15.     set output
  16.     set terminal wxt
  17.     ” | gnuplot
  18. fi
我这个方法比较简单,title就是数据来源的文件名字,ylabel是字段名字,实际上,由用户输入title ylabel 以及图例的title会更加合适。我这只是一个简单的sample,来分享如何在shell脚本利用gnuplot绘制图片。
使用命令如下:
  1. ./work.sh /home/manu/processX_CPU_Usage.log 8
 输出图片如下:
aaa
我这是一个简单的例子,实际上,我们实际可能会跑出来40个进程的CPU使用情况,我们可以将参数写入配置文件,然后每一行去执行 work.sh,这样的话,我们就可以直接维护配置文件就可以了。当然了,我的脚本还很简陋很粗糙粗,远远不能在工程中实际使用。毕竟是晚上捣鼓出来的小 玩意儿。参考文献:
1 使用gnuplot科学画图 马欢

转载请注明:爱开源 » shell脚本利用gnuplot绘制图片

您必须 登录 才能发表评论!