0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【備忘録】Railsで作るアプリでグラフを描画する方法 Chartkick

Last updated at Posted at 2021-06-02

Chartkick

グラフ描画することができるぷろじぇくと
いろんな言語で実装されているらしい

利点

  • RubyとJavascript間のデータの受け渡しの意識が不要
    • データを並列にしてRubyのメソッドへ渡すだけ(Ruby側で実装が完結する)
  • Rails6でもOK

install

/Gemfile
  
  
  
  gem "chartkick"

Gemfileの内容を反映する

ターミナル
  $ bundle install

chart.jsをインストール
(ここから下はRails6の話です, Rails5の場合はChartkick 公式のページを参照ください)

ターミナル
  yarn add chartkick chart.js

jsでimport

/app/javascript/packs/application.js
import "chartkick/chart.js"

Ruby(例)

/app/controler/コントローラ名_controller.rb
  @data = ハッシュ なり 配列 なり
/app/views/コントローラ名/なんたら.html.erb
<%= pie_chart(@data, colors:["000000",...
])  %>

スクリーンショット 2021-06-02 19.20.41.png

#その他

Chart.jsのオプションを使う

dataset:{}

/app/views/コントローラ/なんたら.html.erb
<%= line_chart(@xy, dataset:{pointRadius:0, borderWidth:10}, width:"500px", height:"500px")  %>

スクリーンショット 2021-06-14 18.59.05.png

複数の線を引く

コントローラ
@lines = [{name:"a", data:[[0,0],[1,3],[4,4]]}, {name:"b", data:[[0,2],[1,2],[4,2]]}, {name:"c", data:[[0,5],[1,0],[4,3]]}]
/app/views/コントローラ/なんたら.html.erb
  <%= line_chart(@lines, dataset:{tension:0, pointRadius:0})%>

スクリーンショット 2021-06-14 20.36.17.png

トラブルシューティング

1. Error Loading Chart

スクリーンショット 2021-06-02 17.29.54.png

うまくライブラリをインポートできてなかったようです
(僕の場合は import "chartkick/chart.js"し忘れてました)

2. Loadingのまま変わらない

ターミナル
yarn add chartkick chart.js

は, 始めの一回でいいと思って2個目のアプリではやってなかったけど, 毎回必要だった.

diff 1個目のアプリ 2個目のアプリ

package.jsonchartkick chart.jsがなかったので判明

#参考
Chartkick 公式
Chart.js公式

つくったアプリ

宣伝です. こんなことができるアプリです(誰が使うんだろう...)
herokuのページ
gitのリポジトリ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?