最近一段时间一直在准备着找工作,学各种东西。期间还是感觉很有收获的,等有时间整理一下然后发布出来。实验室的项目也还在进行,不过我的工作相对少了很多(因为快要毕业了嘛,还是很感激老师能体谅我们的,^_^)。
目前我在项目中的任务是做一个系统的图形界面。当初也不知道怎么想的,竟然想用web形式来实现,也许是为了不让自己之前学的ruby和rails不要白费吧,呵呵。现在想想Web GUI的想法的确挺好的,由于ruby的类库丰富,开发相对还是比较轻松的,不过为了让C++系统和rails的能正常交互消息还是需要学一下http类库libcurl方面的知识(这些知识它的官网上有很多,也很详细)。
由于项目的需要,我们的图形界面上需要显示一些数据的分析图表,使用ruby的gruff工具包可以绘制很好的数据分析图表。下面说下linux环境下gruff的安装和使用,安装过程如下:
1、首先安装ruby-1.8.6环境以及ruby gems,大家可以在网上找相关的教程。
2、安装ImageMagick的库,gruff的运行依赖于这些库
yum install ImageMagick yum install ImageMagick-devel
3、安装TrueType字体。ImageMagick在画图时需要用到这个库。有些linux版本会默认安装,那样的话大家就可以跳过这步了
wget http://www.osresources.com/files/centos-windows-fonts/msfonts.tbz mkdir /usr/share/fonts/default/TrueType tar xvjpf msfonts.tbz -C /usr/share/fonts/default/TrueType/
4、安装 rmagick 的gem包
gem install rmagick
5、安装gruff所需的gem包。gruff包会依赖以下包:json_pure、rubyforge、hoe、rake
gem install gruff
至此gruff就安装完成了。下面介绍一个gruff的代码实例,实例中会绘制一个柱状图,其他类型的图的画法请参考gruff的rdoc文档。
示例代码如下:
require 'rubygems'
require 'gruff'
g = Gruff::Bar.new(600) # The graph will be 600 pixels wide.
g.bar_spacing = 0.5 # the bars' space
g.title = 'The Nodes\'s Load'
g.theme_37signals # The best-looking theme, in my options.
load_info_1=[21,3,6,14,7,11,19] #the data information, you can use you own data here.
load_info_2=[8,27,13,4,9,14,10]
range = (1..7)
g.data('Node 1', range.collect { |x| load_info_1[x-1] })
g.data('Node 2', range.collect { |x| load_info_2[x-1]})
g.labels = {2 => 'n=2', 4 => 'n=4', 6 =>'n=6' }
g.write('load_info_bar.png')
输出结果图片如下:
可以看出,gruff生成的图片还是挺漂亮的。我这里的数据是自己任意写的,没什么实际的意义。
PS:我个人还是很喜欢Ruby语言的,它的语法优美,代码看起来很像伪代码,很易读;它有丰富的类库,对文本处理的功能很强。大家如果想学一门脚本语言的话建议学习Ruby,可以很好的提高你的工作效率,呵呵
参考资料:
[1]http://hi.baidu.com/rainchen/blog/item/089ef7364497de320a55a9a3.html
[2] Ruby Cookbook: Recipe 12.4. Graphing Data
Recent Comments