2011-10-20 109 views
0

我有这个问题。我认为这很简单,但我无法做到。使用gruff.I 林建筑图表和表格从月01缩放斧轴12个 数据shud HV BN以月计09和10绘出,但它被绘制到08月份和10表看起来很混乱

def stat1 
    @yeara = params[:year] 
    @games = Games.find(:all) 
    g = Gruff::StackedBar.new('800x450') 
    g.theme = { 
    :colors => ['#138F6A','#330000','#ff6600', '#3bb000', '#1e90ff', '#efba00', '#0aaafd'], 
    :marker_color => '#aaa', 
    :background_colors => ['#eaeaea', '#fff'] 
    } 
    g.hide_title = true 

    @dr = Game.count(:all, :conditions=> ["game_id= ? and DATE_FORMAT(date, '%Y')= ?",1,@yeara], :group => "DATE_FORMAT(date, '%m')", :order =>"date ASC") 
    @df = Game.count(:all, :conditions=> ["game_id= ? and DATE_FORMAT(date, '%Y') = ?",2,@yeara], :group => "DATE_FORMAT(date, '%m')", :order =>"date ASC") 
# all 12 month a year  
    @full = Hash["01",0,"02",0,"03",0,"04",0,"05",0,"06",0,"07",0,"08",0,"09",0,"10",0,"11",0,"12",0]  
    year = (@dr.keys |@df.keys|@full.keys).sort 
    @keys = Hash[*year.collect {|v| [year.index(v),v.to_s] }.flatten] 

# Plot data to table 
    @dfdr = Array.new 
    @dfdr << @keys.collect {|k,v| @df[v].nil? ? 0 : @df[v]} 
    @dfdr << @keys.collect {|k,v| @dr[v].nil? ? 0 : @dr[v]} 

# Plot data to graph 
    g.data("Adam", @keys.collect {|k,v| @dr[v].nil? ? 0 : @dr[v]}) 
    g.data("Eve", @keys.collect {|k,v| @df[v].nil? ? 0 : @df[v]}) 
    g.labels = @keys 

    g.write("#{RAILS_ROOT}/public/images/game.png") 
    render(:layout => false) 

这里是一些解释 输出为

@dr = Game.count(:all, :conditions=> ["game_id= ? and DATE_FORMAT(date, '%Y')= ?",1,@yeara], :group => "DATE_FORMAT(date, '%m')", :order =>"date ASC") 

=> [[ “09”,3],[ “10”,1]

@df = Game.count(:all, :conditions=> ["game_id= ? and DATE_FORMAT(date, '%Y') = ?",2,@yeara], :group => "DATE_FORMAT(date, '%m')", :order =>"date ASC") 

=> [[ “10”,2]]

试图追踪哪里出错..但跑出了主意。 请向我指出一些东西。我可以粘贴图表,但即时通讯不符合条件还说stackoverflow。 ;)

谢谢你

回答

0

行了。

@keys.collect {|k,v| @df[v].nil? ? 0 : @df[v] 

@keys是未排序的顺序。所以先简单地排序它。

@keys.sort.collect {|k,v| @df[v].nil? ? 0 : @df[v] 

谢谢大家。 :))))))对不起,如果有任何。 ;)