2013-10-25 47 views
6

我安装了chartkick 1.2.0和groupdate 1.0.4 gem。当我尝试去做某事,如:Chartkick y轴不正确标签

<%= area_chart Match.group_by_day_of_week(:created_at).count, :width=>"700px;", :height=>"150px;" %> 

我得到这个:

enter image description here

它总是给我错误的y轴。我应该如何格式化它,以便显示“星期一”,“星期二”...

我的第二个例子,我也无法正确地将它按一小时分组。

<% abc=Matches.on_location(@location).group_by{|b| b.created_at.strftime("%H").to_i} %> 
    <% abc.update(abc){|key, v| v.length} %> 
    <%= abc=abc.sort_by{|k,v| k} %> 
    <%= area_chart abc, :width=>"700px;", :height=>"150px;" %> 

我在做什么错,它显示1:00:00 AM。等?我只希望有数字,例如:0,1,2,3 .. 23?

我搜索了一下,从顶部到底部检查他们的文档:http://ankane.github.io/chartkick/现在几个小时,我真的不知道我错过了什么。任何帮助将不胜感激!

回答

2

This thread Chartkick的Github表明图表库(Highcharts,在你的案例中?)对你想要什么样的X轴做出假设。有人猜测,我会说这里的问题是,图书馆做出了一个不正确的假设,所以尝试以更明显的格式命名输入的密钥。

在你的第一个例子,你可以尝试使用"Monday""Tuesday"等作为关键字,而不是01等:

results = Match.group_by_day_of_week(:created_at).count # hash with numeric keys 
days = %w(Monday Tuesday Wednesday Thursday Friday Saturday Sunday) 
results = results.inject({}){|a, (k,v)| a.update(days[k] => v); a } # change numeric keys to weekday name 

对于第二个例子,尝试格式化日期%H:%M:%S所以它更显然你想要一个时间轴:

abc=Matches.on_location(@location).group_by{|b| b.created_at.strftime("%H:%M:%S")} 
+0

不幸的是,给定的代码也不起作用。我试着用大写的小写字母的日期名称,我命名他们的名字,并给了星期天的第一名。它没有工作。对于你的第二个例子,我尝试过,如果我将它们按秒分组,我会得到一个关键值对的gazzilon。我尝试过,但它也不起作用。 – necker

+0

这真是一个耻辱,因为我对Chartkick并不是特别熟悉,所以这是一个黑暗中的镜头。也许考虑在他们的Github上打开一个线程/提交一个错误,这样一个在项目上工作的人可以看看并且让你知道是否有你需要做的事情,或者如果这是意外的行为。 – james246

1

不幸的是,现在没有办法做到这一点。作为替代方案,您可以尝试一个柱形图。

+0

你为什么认为这不可行? – necker

+4

我写了chartkick :) –

+0

不错的一个,... :) – necker