2013-10-25 12 views
6

Ich habe Chartkick 1.2.0 und Gruppendatum 1.0.4 gem installiert. Wenn ich versuche, etwas zu tun wie:Chartkick Y-Achse unkorrekt Beschriftung

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

bekomme ich dies:

enter image description here

Es gibt mir immer die falsche y-Achse. Wie sollte ich es so formatieren, dass es "Montag", "Dienstag" anzeigen würde ...

Mein zweites Beispiel, das ich auch nicht richtig machen kann, ist die Gruppierung nach Stunden an einem Tag.

<% 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;" %> 

Was ich tun falsch bin, dass es 1.00.00 usw. anzeigt? Ich möchte nur Nummern haben: 0, 1, 2, 3 .. 23?

Ich googelte herum, überprüfte ihre Dokumente von oben nach unten: http://ankane.github.io/chartkick/ für einige Stunden jetzt und ich weiß wirklich nicht, was ich verpasst habe. Jede Hilfe würde sehr geschätzt werden!

Antwort

2

This thread auf Chartkicks Github zeigt an, dass die Diagrammbibliothek (Highcharts, in Ihrem Fall?) Annahmen darüber macht, welche Art von X-Achse Sie wollen. Bei einer Schätzung würde ich sagen, dass das Problem hier ist, dass die Bibliothek eine falsche Annahme trifft, also versuchen Sie, die Schlüssel Ihrer Eingabe in einem offensichtlichen Format zu benennen.

In Ihrem ersten Beispiel, Sie versuchen, die anstelle von 0"Monday", "Tuesday", etc als Schlüssel verwenden könnten, 1, etc:

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 

Für das zweite Beispiel, versuchen Sie das Datum als %H:%M:%S Formatierung so ist es mehr offensichtlich, dass Sie eine Zeitachse möchten:

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

Leider funktioniert der angegebene Code auch nicht. Ich habe versucht mit Großbuchstaben Tagnamen, ich bestellte sie mit Namen und gab Sonntag auf den ersten Platz. Nichts davon hat funktioniert. Für dein zweites Beispiel habe ich versucht, wenn ich sie um Sekunden gruppiere, würde ich ein Gazzilon von Schlüsselwertpaaren bekommen. Ich habe es versucht, aber es funktioniert auch nicht. – necker

+0

Das ist eine Schande, es war ein Schuss in die Dunkelheit, da ich Chartkick nicht besonders gut kenne. Vielleicht erwägen Sie, einen Thread zu öffnen/einen Fehler auf ihrem Github zu platzieren, damit jemand, der an dem Projekt arbeitet, einen Blick darauf werfen kann und Sie wissen lässt, ob Sie etwas tun müssen oder ob es ein unerwartetes Verhalten ist. – james246

1

Leider gibt es keine Möglichkeit, dies jetzt zu tun. Als Alternative könnten Sie ein Säulendiagramm ausprobieren.

+0

Warum denkst du, dass das nicht möglich ist? – necker

+4

Ich schrieb chartkick :) –

+0

Nice one, ... :) – necker

Verwandte Themen