[size=medium]Gruff 是Geoffrey Grosenbach开发的图表绘制gem.
文档:
http://gruff.rubyforge.org/
安装: 需要ImageMagick 和 RMagick. 安装完毕可以用Gruff主页上的Code Sample测试一下是否安装成功. 我运行的时候字体有些问题,gruff采用了自带的font, 在自己的机器上跑的时候需要指定一下font的路径:
g.font = File.expand_path('/your/font/path/yourfont.ttf')
Gruff 提供了很多有趣的图类:
- Gruff::Line 就一般的线图 股市行情什么的可以用用
- Gruff::Pie Pie图 市场份额一类的比较方便
- Gruff::Bar 直方图 年份变化一类都可用
- Gruff:Area 面积图 似乎用处不大
- Gruff:Scene 场景图 这个比较有趣 在文档提供的例子中:
g = Gruff::Scene.new("500x100", "path/to/city_scene_directory")
# Define order of layers, back to front 设定图像层所在的目录
g.layers = %w(background haze sky clouds)
# Define groups that will be controlled by the same input 可以将受同一控制的层
组成组
g.weather_group = %w(clouds)
g.time_group = %w(background sky)
# Set values for the layers or groups 设定控制输入 对其进行匹配选择图片
g.weather = "cloudy"
g.time = Time.now
g.haze = true
# Write the final graph to disk
g.write "hazy_daytime_city_scene.png"
这个可以做背景图的实时控制 比如早晚太阳的不同位置
- Gruff::Spider 这是我的应用中需要的图片类型 中文叫相图吧 Gruff::Net和这个类似 差
别在于只标识出包络线 相图标识了所围成的区域 下面就以这个类别为例说说如何在rails
中用Gruff
我的应用是大概就是在用户口味的统计数据上进行相图绘制 作为用户资料的一个部分 因
此把相图绘制写在了model里面而不是在controller里 由于需要仅仅被本类调用 设置为
protected方法 由于用户每更新或者创建的时候都重新绘制相表 因此设定了相应的
callback 同时在用户注销的时候删除plot
require 'gruff'
class User < ActiveRecord::Base
after_save :spider_plot
after_create :spider_plot
after_update :spider_plot
after_destroy :spider_plot_destroy
protected
def spider_plot
# plotting
end
def spider_plot_destroy
# delete the plot
end
end
在controller中的代码传递了图像所在的路径给view 在view中间就直接用image_tag显示了
最后来张无耻的图
[/size]