[Ruby on Rails] Erstellen Sie mit Chartick ein kreisförmiges Diagramm der Summen nach Spalten

Einführung

Ich habe Chart Kick verwendet, weil ich ein Diagramm mit Schienen einfügen wollte. Da die Einführung selbst einfach ist, werden wir beschreiben, wie ein Kreisdiagramm der aggregierten Ergebnisse erstellt wird.

Referenzierte Seite

Umgebung

ruby 2.5.1 Rails 5.2.4.3

Annahmen und Ziele

Erstellen Sie ein Kreisdiagramm aus der ** Meinungsspalte (Ganzzahl) ** der ** Abstimmtabelle **, in dem die Meinungen des Benutzers zusammengefasst sind. Wenn der Wert der Meinungsspalte 1 ist, ist es für, und wenn es 0 ist, ist es das Gegenteil, aber es wird mit anderen Werten und gemischten NULL-Werten erstellt.

** Abstimmtabelle **

id opinion
1 1
2 1
3 0
4 1
5 0
6 2
7 NULL
8 3
9 NULL
10 0

** Abschlusszeichnung **

pie_A.png

Einführung von Chart Kick

Obwohl es auf der Referenzseite beschrieben ist, wird es erneut beschrieben.

Gemfile


gem "chartkick"   #Anhängen

Gemfile


$ bundle install

app/javascript/packs/application.js


//= require chartkick
//= require Chart.bundle  #Fügen Sie zwei Zeilen hinzu

Reflexion auf Ansichtsseite

Die anzuzeigende Seite kann sich an einer beliebigen Stelle befinden, aber dieses Mal möchte ich das Diagramm in index.html.erb des Posts-Controllers anzeigen.

html.erb:app/views/posts/index.html.erb


<%= pie_chart Vote.group(:opinion).count%>

chart (1).png

Es ist ein Diagramm, das Sie nicht wirklich verstehen, was es darstellt. ..

Definieren Sie daher Variablen und Methoden für Diagramme in der Controller-Datei.

app/controllers/posts_controller.rb


  def index
    @opinion = Vote.pluck(:opinion)
    @aggregate = aggregateOpinion(@opinion)
    @sum = sumOpinion(@opinion)
  end

  def aggregateOpinion(array)
    result = [["Zustimmen",0],["Opposition",0],["Weder",0],["Keine Antwort",0]]
    array.each do |i|
      if i == 1
        result[0][1] += 1
      elsif i == 0
        result[1][1] += 1
      elsif i == nil
        result[3][1] += 1
      else 
        result[2][1] += 1
      end
    end
    return result
  end

  def sumOpinion(array)
    result = [["Gesamtzahl der Stimmen",0],["Anzahl gültiger Stimmen",0],["Anzahl ungültiger Stimmen",0]]
    array.each do |i|
      if i == nil
        result[2][1] += 1
      else 
        result[1][1] += 1
      end
    end
    result[0][1] = array.length 
    return result
  end

Kommentar

Mit der Zupfmethode wird nur die Zielspalte als Array erfasst. Danach wird es mit der aggregateOpinion-Methode in Daten für ein Kreisdiagramm formatiert.

Da der Index des Ergebnisarrays unverändert in der Anzeigereihenfolge des Kreisdiagramms liegt, lautet der Parameter Der NULL-Wert steht an letzter Stelle, gefolgt vom sogenannten "anderen" (in diesem Fall dem Namen [weder]).

Die sumOpinion-Methode steht nicht in direktem Zusammenhang mit dem Diagramm, es ist jedoch schwierig, die Informationen über die Gesamtzahl der Stimmen in das Diagramm einzufügen, sodass sie separat erstellt werden.

Aufgrund der oben genannten Inhalte möchte ich dies erneut auf der Ansichtsseite wiedergeben.

html.erb:app/views/posts/index.html.erb


<%= pie_chart @aggregate, width: "500px"%>

chart (2).png

Dies ist kein Problem, aber am Ende werden das Layout und der Inhalt, die mit der sumOpinion-Methode erfasst wurden, im Tabellenelement angezeigt und abgeschlossen.

html.erb:app/views/posts/index.html.erb


<%= pie_chart @aggregate,colors: ["#3333cc","#cc3333","#339966","333"], donut: true , width: "500px"%>
<table border="1" width="500">
  <tr>
    <th>Gesamtzahl der Stimmen</th>
    <th>Anzahl gültiger Stimmen</th>
    <th>Anzahl ungültiger Stimmen</th>
  </tr>
    <tr>
    <th><%=@sum[0][1]%></th>
    <th><%=@sum[1][1]%></th>
    <th><%=@sum[2][1]%></th>
  </tr>
</table> 

pie_A.png

Am Ende

Was haben Sie gedacht. Ich glaube, ich konnte es etwas mehr auf den Methodenteil anwenden. .. Natürlich unterstützt Chartkick nicht nur Kreisdiagramme, also probieren Sie es bitte aus. Danke fürs Zuschauen!

Recommended Posts

[Ruby on Rails] Erstellen Sie mit Chartick ein kreisförmiges Diagramm der Summen nach Spalten
[Ruby on Rails] Fügen Sie eine Spalte mit externen Schlüsselbeschränkungen hinzu
[Rails] Verfahren zum Verknüpfen von Datenbanken mit Ruby On Rails
Ich habe mit Ruby On Rails ein Portfolio erstellt
[Ruby on Rails] Implementieren Sie ein Kreisdiagramm, das den Prozentsatz der Farben angibt
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 1
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 2
Tutorial zum Erstellen eines Blogs mit Rails für Anfänger Teil 0
Schritte zum Erstellen einer Ruby on Rails-Entwicklungsumgebung mit Vagrant
(Ruby on Rails6) Erstellen Sie eine Funktion zum Bearbeiten des veröffentlichten Inhalts
Erstellen Sie mit der Datei Ruby on Rails seeds.rb eine große Anzahl von Datensätzen mit einem einzigen Befehl
[Ruby on Rails] Test mit RSpec anzeigen
[Rails6] Erstelle eine neue App mit Rails [Anfänger]
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
Hinweise zur Verwendung von FCM mit Ruby on Rails
Erstellen eines einfachen Balkendiagramms mit MPAndroidChart
[Ruby on Rails] Controller-Test mit RSpec
Befehl zum Erstellen / Löschen des Ruby on Rails-Controllers
[Rails 5] Erstelle eine neue App mit Rails [Anfänger]
[Ruby on Rails] Modelltest mit RSpec
Erklärung von Ruby auf Schienen für Anfänger ①
Anfänger haben mit Ruby on Rails ein Portfolio erstellt
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
Validierungseinstellungen für die Ruby on Rails-Anmeldefunktion
[Rails] Rails neu, um eine Datenbank mit PostgreSQL zu erstellen
Einführung in Rspec mit Ruby on Rails x Docker
Veröffentlichen Sie die mit Ruby on Rails erstellte App
[Ruby on Rails] Select2-Einführungsnotiz für Webpacker
Erstellen Sie einen Team-Chat mit Rails Action Cable
Einführung in Rspec, ein Testframework für Ruby on Rails
[Ruby on Rails] Ein Memorandum mit Layoutvorlagen
[Ruby on Rails] Versuchen Sie, einen Service zu erstellen, der einheimische Katzen glücklich macht
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
(Ruby on Rails6) Erstellen von Daten in einer Tabelle
Bestimmen Sie die aktuelle Seite mit Ruby on Rails
[Ruby on Rails] Hochladen mehrerer Bilder mit Refile
Docker-Befehl zum Erstellen eines Rails-Projekts in einem einzigen Schlag in einer Umgebung ohne Ruby
Erstellen Sie eine Ruby on Rails-Entwicklungsumgebung in AWS Cloud9
[Ruby on Rails] Löschen Sie s3-Bilder mit Active Strage
Erstellen einer EC-Site mit Rails 5 ⑨ ~ Erstellen einer Warenkorbfunktion ~
Führen Sie Ruby on Rails RSpec-Tests mit GitHub-Aktionen aus
[Ruby on Rails] So ändern Sie den Spaltennamen
Erstellen Sie eine Vorlage für das iOS14-Widget mit Absichtskonfiguration.
[Ruby on Rails] Ändern Sie die URL-ID in den Spaltennamen
Erklärung von Ruby auf Schienen für Anfänger ⑥ ~ Erstellung der Validierung ~
Erklärung von Ruby on Rails für Anfänger ② ~ Links erstellen ~
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
Site Map im RSS / Atom-Format mit Ruby on Rails erstellt
Erklärung von Ruby on Rails für Anfänger ⑦ ~ Flash-Implementierung ~
Ruby on Rails Elementary