簡単にグラフが描けるライブラリー「Chart.js」

Chart.jsを使えば、簡単に色んなグラフが描けます。
折れ線グラフ、円グラフ、棒グラフなど。

公式ホームページ
https://www.chartjs.org/

グラフ描画エリアの指定に、canvas要素を使用します。

<canvas id=”chart” width=”315” height=”315”></canvas>

Chat.jsとJqueryを読み込みます。

var ctx = $(’#chart’);
var mychart = new Chart(ctx, {
    type: ’pie’,//doughnut
    data: {
        labels: [
            ’ラベル1’,
            ’ラベル2’,
            ’ラベル3’,
            ’ラベル4’,
            ’ラベル5’
        ],
        datasets: [{
            label: ’サンプルグラフ’,
            data: [
                10,
                40,
                20,
                10,
                20
            ],
            backgroundColor: [
                ’rgba(241, 107, 141, 1)’,
                ’rgba( 31, 167, 165, 1)’,
                ’rgba(249, 199,  83, 1)’,
                ’rgba(176, 110,  30, 1)’,
                ’rgba(124,  91, 164, 1)’
            ]
        }]
    },
    options: {
        legend: {
            display: true,
            position: ’bottom’,
        },
        scales: {
            yAxes: [{
                ticks: {
                    display: false,
                    beginAtZero: true,
                },
                gridLines: {
                    display: false
                }
            }]
        }
    }
});

// Define a plugin to provide data labels
Chart.plugins.register({
    afterDatasetsDraw: function (chart, easing) {
        // To only draw at the end of animation, check for easing === 1
        var ctx = chart.ctx;

        chart.data.datasets.forEach(function (dataset, i) {
            var meta = chart.getDatasetMeta(i);
            if (!meta.hidden) {
                meta.data.forEach(function (element, index) {
                    // Draw the text in black, with the specified font
                    ctx.fillStyle = ’rgb(0, 0, 0)’;

                    var fontSize = 16;
                    var fontStyle = ’normal’;
                    var fontFamily = ’Helvetica Neue’;
                    ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);

                    // Just naively convert to string for now
                    var dataString = dataset.data[index].toString();

                    // Make sure alignment settings are correct
                    ctx.textAlign = ’center’;
                    ctx.textBaseline = ’middle’;

                    var padding = 5;
                    var position = element.tooltipPosition();
                    ctx.fillText(dataString, position.x, position.y - (fontSize / 2) - padding);
                });
            }
        });
    }
});

参考サイト
https://misc.0o0o.org/chartjs-doc-ja/general/fonts.html
https://obel.hatenablog.jp/entry/20160626/1466937585
https://curecode.jp/tech/chart-js-canvas-responsive-width-and-fixed-height/