1. ホーム
  2. Web制作
  3. html5

統計図表を実現するHtml5円グラフ描画方法

2022-01-12 20:12:37

Html5には強力な描画APIが用意されており、javascriptを使って様々なグラフを簡単に描画することができます。今回は、主にHTML5を使った円グラフ(統計図表)の描画方法について説明します。まずは円グラフの効果を見てみましょう。

このグラフは、渡されたスケールパラメータ(配列)に基づいて円グラフを動的に描画するように生成されています。円グラフのサイズも <canvas> の高さに基づいて動的に変更されます。

コードの全容は以下の通りです。

<!DOCTYPE html>
<html>
    <head>
        <title>Canvas test</title>
        <meta charset="UTF-8">
        <script>
            //Draw a pie chart
            function drawCircle(canvasId, data_arr, color_arr, text_arr)
            {
                var c = document.getElementById(canvasId);
                var ctx = c.getContext("2d");
 
                var radius = c.height / 2 - 20; //radius
                var ox = radius + 20, oy = radius + 20; //center of circle
 
                var width = 30, height = 10; //legend width and height
                var posX = ox * 2 + 20, posY = 30; //
                var textX = posX + width + 5, textY = posY + 10;
 
                var startAngle = 0; // start radian
                var endAngle = 0; // endAngle
                for (var i = 0; i < data_arr.length; i++)
                {
                    //plot pie chart
                    endAngle = endAngle + data_arr[i] * Math.PI * 2; //endAngle
                    ctx.fillStyle = color_arr[i];
                    ctx.beginPath();
                    ctx.moveTo(ox, oy); //move to the center of the circle
                    ctx.arc(ox, oy, radius, startAngle, endAngle, false);
                    ctx.closePath();
                    ctx.fill();
                    startAngle = endAngle; //set the starting radius
 
                    //draw the scale map and text
                    ctx.fillStyle = color_arr[i];
                    ctx.fillRect(posX, posY + 20 * i, width, height);
                    ctx.moveTo(posX, posY + 20 * i);
                    ctx.font = 'bold 12px Microsoft Black'; // italic 30 pixel Microsoft Black font
                    ctx.fillStyle = color_arr[i]; //"#000000";
                    var percent = text_arr[i] + "" + 100 * data_arr[i] + "%";
                    ctx.fillText(percent, textX, textY + 20 * i);
                }
            }
 
            function init() {
                //draw the pie chart
                //scale data and colors
                var data_arr = [0.05, 0.25, 0.6, 0.1];
                var color_arr = ["#00FF21", "#FFAA00", "#00AABB", "#FF4400"];
                var text_arr = ["Q1", "Q2", "Q3", "Q4"];
 
                drawCircle("canvas_circle", data_arr, color_arr, text_arr);
            }
 
            //execute the init() function when the page loads
            window.onload = init;
        </script>
    </head>
    <body>
        <h3> HTML5 drawing pie chart demo</h3>
        <p>
            <canvas id="canvas_circle" width="500" height="300" style="border:2px solid #0026ff;" >
                Browser does not support canvas
            </canvas>
        </p>
    </body>
</html>

この機能をそのまま利用し、より美しくしたい場合は、美的な描画を追加することができます。

このコードの最大の柔軟性は、描画パラメータが描画コードから分離されていることと、Canvasコンテナの高さに応じてパイの大きさが自動的に調整されることです。パラメータの受け渡しは以下のように行う。

var data_arr = [0.05, 0.25, 0.6, 0.1]; //scaled data
var color_arr = ["#00FF21", "#FFAA00", "#00AABB", "#FF4400"]; //color
var text_arr = ["Q1", "Q2", "Q3", "Q4"]; //text
//draw the pie chart
drawCircle("canvas_circle", data_arr, color_arr, text_arr);

今回紹介したのはHtml5円グラフの統計図表を実現する描画方法についてですが、もっと関連するHtml5円グラフ統計図表の内容はスクリプトハウスの過去記事を検索するか、以下の関連記事を引き続き閲覧してください、今後もスクリプトハウスを応援してください!。