Gruff 绘图库

[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]

你可能感兴趣的:(.net,Ruby,ActiveRecord,Rails)