[size=medium]Gruff 是Geoffrey Grosenbach开发的图表绘制gem.
文档: [url=http://gruff.rubyforge.org/]http://gruff.rubyforge.org/[/url]
安装: 需要ImageMagick 和 RMagick. 安装完毕可以用Gruff主页上的Code Sample测试一下是否安装成功. 我运行的时候字体有些问题,gruff采用了自带的font, 在自己的机器上跑的时候需要指定一下font的路径:
Gruff 提供了很多有趣的图类:
[list]
[*]Gruff::Line 就一般的线图 股市行情什么的可以用用
[*]Gruff::Pie Pie图 市场份额一类的比较方便
[*]Gruff::Bar 直方图 年份变化一类都可用
[*]Gruff:Area 面积图 似乎用处不大
[*]Gruff:Scene 场景图 这个比较有趣 在文档提供的例子中:
[/list]
这个可以做背景图的实时控制 比如早晚太阳的不同位置
[list]
[*]Gruff::Spider 这是我的应用中需要的图片类型 中文叫相图吧 Gruff::Net和这个类似 差
别在于只标识出包络线 相图标识了所围成的区域 下面就以这个类别为例说说如何在rails
中用Gruff
[/list]
我的应用是大概就是在用户口味的统计数据上进行相图绘制 作为用户资料的一个部分 因
此把相图绘制写在了model里面而不是在controller里 由于需要仅仅被本类调用 设置为
protected方法 由于用户每更新或者创建的时候都重新绘制相表 因此设定了相应的
callback 同时在用户注销的时候删除plot
在controller中的代码传递了图像所在的路径给view 在view中间就直接用image_tag显示了
最后来张无耻的图
[img]/upload/attachment/106200/bf16aa3a-005a-3059-9589-c5ba6cab051f.png[/img]
[/size]
文档: [url=http://gruff.rubyforge.org/]http://gruff.rubyforge.org/[/url]
安装: 需要ImageMagick 和 RMagick. 安装完毕可以用Gruff主页上的Code Sample测试一下是否安装成功. 我运行的时候字体有些问题,gruff采用了自带的font, 在自己的机器上跑的时候需要指定一下font的路径:
g.font = File.expand_path('/your/font/path/yourfont.ttf')
Gruff 提供了很多有趣的图类:
[list]
[*]Gruff::Line 就一般的线图 股市行情什么的可以用用
[*]Gruff::Pie Pie图 市场份额一类的比较方便
[*]Gruff::Bar 直方图 年份变化一类都可用
[*]Gruff:Area 面积图 似乎用处不大
[*]Gruff:Scene 场景图 这个比较有趣 在文档提供的例子中:
[/list]
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"
这个可以做背景图的实时控制 比如早晚太阳的不同位置
[list]
[*]Gruff::Spider 这是我的应用中需要的图片类型 中文叫相图吧 Gruff::Net和这个类似 差
别在于只标识出包络线 相图标识了所围成的区域 下面就以这个类别为例说说如何在rails
中用Gruff
[/list]
我的应用是大概就是在用户口味的统计数据上进行相图绘制 作为用户资料的一个部分 因
此把相图绘制写在了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显示了
最后来张无耻的图
[img]/upload/attachment/106200/bf16aa3a-005a-3059-9589-c5ba6cab051f.png[/img]
[/size]