はじめに
個人開発の過程でkickchartを利用する機会があったのですが、日本語の記事でわかりやすいものがあまり見つからなかったので公式ドキュメントを日本語化&個人的に役に立った内容を記載しておきます!kickchartを利用する際の参考にしてください!!
導入
まずはkickchartの導入からです。rails のバージョンによって導入方法が違うので注意してください!
どのバージョンであってもまずはgemファイルに以下の記述を書き加えてください!!
gem "chartkick"
rails7の場合
configのimport.rbに以下の記述を追加してください。
pin "chartkick", to: "chartkick.js"
pin "Chart.bundle", to: "Chart.bundle.js"
また、app/javascript/application.jsに以下の記述を追加してください。
import "chartkick"
import "Chart.bundle"
これでrails7における導入は完了です!!
rails6の場合
ターミナルorコマンドプロンプトにて以下のコマンドを実行してください!
yarn add chartkick chart.js
app/javascript/packs/application.jsに以下の記述を追加してください!
import "chartkick/chart.js"
これでrails6における導入は完了です!
rails5の場合
app/assets/javascripts/application.jsに以下の記述を追加してください!
//= require chartkick
//= require Chart.bundle
これでrails5における導入は完了です!
導入できるグラフの例
公式ドキュメントで紹介されているグラフを紹介します!!
line chart(曲線図)
<%= line_chart User.group_by_day(:created_at).count %>
上記のグラフはcreated_atを横軸、その日の投稿数を縦軸で表示しています。
pie chart (円グラフ)
<%= pie_chart Yogurt.group(:flavor).count %>
Yogurtテーブルからflavorカラムのカウントを表にしています。
Column chart(棒グラフ)
<%= column_chart Order.group_by_day_of_week(:created_at, format: "%a").count %>
上記は一週間の曜日ごとの投稿数を表示するグラフです。
Bar chart (棒グラフ)
<%= bar_chart Shirt.group(:size).sum(:price) %>
上記はShirtモデルのsizeごとに集計しその売り上げ合計を表示した棒グラフです。
Area chart (面積図)
<%= area_chart Visit.group_by_minute(:created_at).maximum(:load_time) %>
Scatter chart (散布図)
<%= scatter_chart City.pluck(:size, :population), xtitle: "Size", ytitle: "Population" %>
Multiple series
<%= line_chart @goals.map { |goal|
{name: goal.name, data: goal.feats.group_by_week(:created_at).count}
} %>
もしくは
<%= line_chart Feat.group(:goal_id).group_by_week(:created_at).count %>
最後に
次は様々なグラフオプションについての記事を書く予定なので是非楽しみにしていてください。