`

Gruff和缓存图表

阅读更多
     之前已经介绍了一些关于Gruff的基础知识和应用,当然gruff的图表是生成的,当时生产,就存在缓存的问题。那么,我们看一个Gruff缓存的例子:

1. 安装插件


sudo gem install gruff 


2. Rails中进行配置
Rails::Initializer.run do |config|    
  config.gem 'gruff', :lib => 'gruff', :version => '0.3.4   
end  


3. 在Controller的调用

class GruffController < PortalController   
  append_before_filter :load_graph,   
   :only => [total_orders_graph, :top_sellers_graph]   
  caches_action :recent_orders_graph, :expires_in => 1.day.to_i   
  
  def total_orders_graph   
    orders_graph =  @graph.generate_total_orders   
    send_data orders_graph.to_blob , :type => 'image/png'  
  end  
  
private   
  def load_graph   
    @graph = Graphs::ClientGraph.new(@CURRENT_CLIENT)   
  end  
end  


4. 在model中进行cache

class Graphs::ClientGraph   
  def initialize(client)   
    @client = client   
  end  
  
  def generate_total_orders   
    total_orders_graph = Gruff::Bar.new  
    total_orders_graph.title = "Orders"  
    dates = working_week   
    total_orders_graph.labels = Hash[*dates.collect{|date|[dates.index(date), date.strftime("%d %b")]}.flatten]   
  
    datasets = []   
    for date in dates   
      datasets.push(@client.orders.on_day   
        (date.beginning_of_day,date.end_of_day).count)   
    end  
  
    total_orders_graph.data(:total_orders,datasets, '#009900')   
    total_orders_graph.x_axis_label = 'Date'  
    total_orders_graph.y_axis_label = "Total"  
    total_orders_graph.hide_legend = true  
    total_orders_graph   
  end  
  
private   
  def working_week   
    days_in_a_week = 7   
    dates = []   
    days_in_a_week.times do |day_value|   
      date = Date.today - day_value.days   
      dates.push date if date.wday != 0 && date.wday != 6   
    end  
    dates.reverse   
  end  
end 



5. Html的显示
<%= image_tag( url_for(:action => :total_orders_graph, :controller => :client_dashboard), :size => '500x400') -%> 



6. 生成效果如下



  • 大小: 38.4 KB
分享到:
评论
1 楼 a398302010 2010-09-13  
您好!
   我今天晚上学着你这样配置,配置了好久还是不能成功。
   你能给我说下controllers下的控制器的命名应该是怎样。models下模型的命名应该是怎样。views下.rhtml的命名应该是怎样吗。
   谢谢了

相关推荐

    ruby中gruff画图的简单例子

    此外,Gruff支持多种图表类型,例如线图(`Gruff::Line`)、饼图(`Gruff::Pie`)和散点图(`Gruff::Scatter`)。每种图表类型都有其特定的属性和方法,可以根据需要选择合适的图表类型。 例如,如果你想创建一个...

    gruff:Ruby的Gruff图形库

    g = Gruff :: Line . new g . title = 'Wow! Look at this!' g . labels = { 0 =&gt; '5/6' , 1 =&gt; '5/15' , 2 =&gt; '5/24' , 3 =&gt; '5/30' , 4 =&gt; '6/4' , 5 =&gt; '6/12' , 6 =&gt; '6/21' , 7 =&gt; '6/28' } g . data :Jimmy ,...

    chart_demo.zip

    标题 "chart_demo.zip" 暗示这可能是一个包含图表示例的压缩文件,很可能用于展示如何在Ruby环境中创建和操作图表。Ruby是一种面向对象的编程语言,它提供了多种库和框架来处理数据可视化,例如Gnuplot、Gruff、...

    benchmark_driver-output-gruff:Benchmark_Driver插件以渲染条形图

    BenchmarkDriver :: Output :: Gruff 基准测试驱动程序插件,用于使用gruff.gem渲染图形。安装安装rmagick.gem的依赖项。 另请参阅: : # macOSbrew install imagemagick@6PKG_CONFIG_PATH=/usr/local/opt/...

    语义网和关联数据开发实践

    - **Gruff**:一个用于绘制图形和图表的Java库,可以帮助开发者更好地呈现AllegroGraph中的数据分析结果。 **3.1 Sesame概述** Sesame是一个开源的Java框架,用于处理RDF数据。它提供了一系列工具和服务,包括: ...

    scrip:带有上下文无关语法的借据

    Scrip 是一种使用解析表达式语法 (PEG) 和解析器(由生成)来描述的微型语言,该解析器能够理解 (且仅 IOU)。 句法 在顶层存在一个赞助规则,它可以是单个赞助规则或由和连词分隔的赞助规则集合。 每个赞助的格式...

    日本每月交通事故

    4. **数据可视化**:`create.rb`脚本可能使用了诸如`Gnuplot`、`Gruff`或`Chartkick`等Ruby库,将分析结果转化为图表,帮助用户直观理解数据。 5. **时间序列分析**:由于是“每月”交通事故,我们需要处理时间序列...

    projetods2:这是 Aline 老师的 ds2 项目的存储库。 谁将运行该项目

    3. 数据可视化:Ruby社区提供了`Gnuplotrb`或`Gruff`库,它们可以生成图表,帮助团队成员直观地理解数据和分析结果。 4. 自动化脚本:Ruby的`Rake`工具可以用于构建自动化任务,比如数据下载、预处理脚本的执行,...

    Genre-Map:电子音乐流派的流派地图

    此外,为了生成直观的地图,开发者可能利用了如Gnuplot或Ruby的图表库如Gruff,来绘制出流派间的层级关系或网络图。 在实际操作中,Genre-Map的实现可能涉及以下几个步骤: 1. 数据收集:收集各种电子音乐流派的...

    一些图形算法的Ruby实现_Ruby_下载.zip

    - Graph库,如`ruby-graph`或`gruff`,提供更高级的功能,如图形可视化。 5. 示例代码学习: - 通过分析压缩包中的代码,可以了解如何在Ruby中实现这些算法,理解其实现细节和效率。 - 学习如何利用Ruby的迭代器...

    iam-viz:从AWS IAM配置绘制图形

    1. **安装依赖**:确保你已经安装了Ruby和必要的Ruby gems,如`aws-sdk`和`gruff`,这些是`iam-viz.rb`脚本运行所必需的。 2. **配置AWS访问**:在运行脚本之前,你需要配置AWS SDK,提供AWS访问密钥和秘密访问密钥...

    meshiterro

    4. **数据可视化**:Ruby可以与诸如`gnuplot`或`gruff`这样的库结合,将网格数据转换成可视化图表,帮助用户更好地理解复杂数据。 5. **版本控制**:Ruby可以轻松集成Git,使得Meshiterro项目可以利用版本控制管理...

    allegrograph-tutorial:该教程贯穿AllegroGraph的快速入门指南和SPARQL教程。 包括可正常工作的docker-compose文件

    可以通过在存储库视图页面上单击“查看三元组”来探索使用SPARQL: 或者也可以通过从存储库视图页面中单击“在Gruff中浏览存储库”来查看Gruff:通过HTTP使用SPARQL查询执行方便的脚本可以执行任意sparql查询。...

    scholar-bot:一个不协调的机器人来组织东西

    6. **数据可视化**:为了便于理解,scholar-bot 可能提供了数据可视化功能,如图表生成,展示文献引用关系、作者网络或其他统计信息。这可能利用了Ruby的`gruff`或`chartkick`库。 7. **配置和扩展性**:作为一个...

    databox-cookbook:数据库厨师食谱

    Ruby也有多个数据可视化库,如`gruff`、`plotrb`或`gplot2`,它们可以与`daru`结合使用,帮助你将数据框转换为图表,更好地理解数据。 8. **案例研究** 通过一个实际案例,比如分析销售数据,展示如何使用`daru`...

    Ruby自动化脚本实现网络拓扑映射

    - **图形化展示**:结合如`rubyvis`、`gruff`等可视化库,Ruby能够将网络拓扑结构以图形化的方式展示出来,便于直观理解和后续分析。 #### 3. 实现步骤 实现Ruby自动化脚本进行网络拓扑映射,大致可以分为以下几个...

    适合度图

    使用Ruby的绘图库,如`gnuplotrb`或`gruff`,可以绘制出个体的适合度分布图。这有助于直观地了解种群的整体适应度状况和演化趋势。 ```ruby require 'gnuplotrb' GnuplotRB::Plot.new( ['individual_fitnesses'...

    cluster_analysis_in_pattern_recognition

    关于模式识别中的聚类分析。要求Ruby 2.1.1安装gem install rmagick pry gruff用法ruby main.rb -i spoons.jpg -n 2ruby main.rb --help

Global site tag (gtag.js) - Google Analytics