工作中有一项工作就是一个监视脚本,把数据的增量信息,每天以邮件的形式发送给相关人员,但是每天的增量信息并不能直观的带来可用信息,比较有用的是近一段时间数据的增长趋势。
如果描述近一段时间的增长趋势,比较直观的做法,就是生成图像,虽然email支持html,但是它毕竟不是在浏览器中浏览,没法使用一些画图js。最后想到的就是生成图片格式的文件。
根据数据生成图片文件,首先想到的是Graphviz,之前用过它的dot命令。可以生成流程图。仔细研究了下这个软件包,貌似它只局限于关系图的表达,并不擅长图表领域。
再继续找,便找到了大名鼎鼎的gnuplot。记得大学时候用的仿真软件RSOFT,都内带了这款画图软件,说明gnuplot在专业绘图领域还是很出名的。
简单的示例,生成一个柱状图。
数据文件 data.txt
1月 22 2月 23 3月 20 4月 26 5月 32 6月 13 7月 22 8月 23 9月 20 10月 26 11月 32 12月 42
再写个脚本文件:plot.sh
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash echo " set terminal png truecolor set output \"my.png\" set grid set style data histograms set style fill solid 1.00 border -1 set xlabel \"date\" set ylabel \"num\" plot \"data.txt\" using 2:xtic(1) title \"my data\" " | gnuplot |
你也可以把echo的内容输入到一个文件里,然后使用gnuplot命令执行这个文件。
执行之后,生成的my.png文件如下,很不幸,不支持中文,不过网上有解决的方法。
备注:set terminal png truecolor 如果你使用的不是可视化界面,这句是需要的,否则它会尝试展示一个图像,而又不能打开窗口,从而报错。
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/664.html