グラフを簡単に描画する「Chart.js」について

f:id:ryoutaku_jo:20190516221046p:plain

【結論】

・Chart.jsを利用する事で、簡単にグラフ表示の機能を実装する事ができる

CDNなどでライブラリを読み込み、ページにスクリプトを埋め込んで、グラフ描画する場所にcanvas要素を記述する事で実装できる

スクリプトで定義している項目や値を、コントローラーから渡す事で、動的にグラフを生成する事が可能

【目次】

【本題】

グラフ機能を簡易に実装できる「Chart.js」について

「Chart.js」とは、JavaScriptで動作するシンプルかつモダンなグラフを簡単に実装できるライブラリです。

Chart.js | Open source HTML5 Charts for your website

公式サイトに掲載されていますが、下記の様なグラフを実装する事ができます。

f:id:ryoutaku_jo:20190516224217p:plain

f:id:ryoutaku_jo:20190516224234p:plain

Chart.js samples

実装手順1:本体のインストールする

実装の方法ですが、まずは本体をインストールする必要があります。

CDNでも配信されており、Railsであれば、下記の様にして読み込む事も可能です。

<%= javascript_include_tag 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js' %>

実装手順2:スクリプトを埋め込む

次にページに、どの様にグラフを描画するのかをスクリプトに定義して、埋め込みます。

公式サイトだと、下記のコードが掲載されていました。

<script>
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ["赤", "青", "黄色", "緑", "紫", "橙"],
        datasets: [{
            label: '得票数',
            data: [12, 19, 3, 5, 2, 3],
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)',
                'rgba(255, 159, 64, 0.2)'
            ],
            borderColor: [
                'rgba(255,99,132,1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)',
                'rgba(255, 159, 64, 1)'
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero:true
                }
            }]
        }
    }
});
</script>

実装手順3:グラフを描画する位置にcanvas要素を記述する

最後にグラフを描画する位置にcanvas要素を記述します。

<canvas id="myChart" width="400" height="400"></canvas>

これにより、実装されたグラフが下記になります。

f:id:ryoutaku_jo:20190516224926p:plain

スクリプトで定義している項目や値などをコントローラーで取得したデータに置き換えれば、動的にグラフを生成する事が可能です。

参考情報

Chart.js · Chart.js 日本語ドキュメント

《今日の学習進捗(3年以内に10000時間に向けて)》

・グラフ作成機能において、ユーザーが任意でフォームを構築できる仕様に対応する為、Rubyの組み込みライブラリを多用した。 その過程で、まだ利用した事がないライブラリが多くある事を改めて知り、自身が知らないだけで、より効果的な手法があるかもしれないと感じた。 全てを一気に読んで理解するのは困難なので、毎日少しづつRubyRailsのリファレンスなどを読み、実装手法の引き出しを増やしたい。

・今まで機能実装する際、いきなりコード書くケースが多く、実装方法を紙などにまとめて整理する事を面倒に感じていた。 しかし、今回のグラフ作成実装は、規模が多く頭の中だけで整理しきれなかった為コメントで実装方法を記述して整理したところ、非常に捗った。 考慮すべきポイントが明確になり、また相談をする際にも、自身の考えが明確に伝わる利点を感じた。 想像以上に有用だった為、今後もこの手法を効果的に利用していきたい。

学習開始からの期間 :160日
今日までの合計時間:1554h
一日あたりの平均学習時間:9.8h
今日までに到達すべき目標時間:1461h
目標との解離:93h
「10,000時間」まで、

残り・・・「8446時間!」