【JavaScript】 jsonファイルを読み込み、Chart.jsでグラフ作ってみた【ミニ記事】 〜Chart.jsを使ってみよう 編〜 Part3

JS
目次

概要

お待たせしました。

すぐに投稿すると言いましたが、お待たせしてしまいました。

STEP
PART 1 ローカルのjsonファイルを読み込む方法
あわせて読みたい
【JavaScript】 jsonを配列にバラす方法【ミニ記事】 〜Chart.jsを使ってみよう 編〜 Part2 概要 前回の記事を読んで頂いた方、ありがとうございます。 本記事はPart2ですが、単体でもお読み頂けます。 STEPPART 1 ローカルのjsonファイルを読み込む方法 https:/...
STEP
PART2 jsonを配列にバラす方法
あわせて読みたい
【JavaScript】 jsonを配列にバラす方法【ミニ記事】 〜Chart.jsを使ってみよう 編〜 Part2 概要 前回の記事を読んで頂いた方、ありがとうございます。 本記事はPart2ですが、単体でもお読み頂けます。 STEPPART 1 ローカルのjsonファイルを読み込む方法 https:/...
STEP
PART3 ローカルのjsonファイルを読み込み、Chart.jsでグラフ作ってみた

本記事

成果物

今回はオーソドックスな棒グラフにしてみました。

簡単にグラフを作ることができました!

コード

オプションなどは、使用しているChart.jsにより書き方が変わるので注意が必要です。

ドキュメントをよく読むことをお勧めします。

日本語のドキュメントも存在しますが、情報が古くなっている記述があるため公式ドキュメントを読む方が良いでしょう。

HTML
<!DOCTYPE html>
<html lang="ja">

<head>

    <meta charset="utf-8">

    <title>グラフ</title> 
    <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>

</head>

<style>

    #ChartArea {

        display: flex;
        width: 75%;
        height: 75%;
        
    }

</style>

<body>

    <input type="file" accept=".json" id="filedata" onchange="readjson()">

    <h1>グラフ</h1>
    
    <div id="ChartArea"> 
        
        <canvas id="myChart"></canvas>
    
    </div>

</body>

<script>


    const ctx = document.getElementById('myChart');
    var Chartlabels=[];
    var Chartdata=[];
    var ChartColor=[];

   
    function Chartjs(){
    //データ読み込み後グラフが更新されない問題はm関数化することにより解決

        var Chartjs=new Chart(ctx, {

            //グラフのタイプ
            type: 'bar',

            data: {

                labels: Chartlabels,

                datasets: [{
                    //データ
                    data: Chartdata,
                    //グラフの色
                    backgroundColor: ChartColor,
                    borderWidth: 0.5,
                    
                    
                }]

            },

            options: {

                plugins:{

                
                    legend: {
                        //凡例は非表示
                        display: false
                 
                    }

                }
    
            }

        });

    }


    //ファイルを読み込む関数
    function readjson() {

        const file = document.getElementById("filedata").files[0];
        const reader = new FileReader();

    
        //ファイルの読み込み
        reader.readAsText(file);
        //ファイルが読み込まれた時発動。中身をjson形式で読みこむ
        reader.onload = (event) => {

            const data = JSON.parse(event.target.result);
            
            console.log(data);
            Split(data);

        };
        
    }

    //jsonをバラして配列に格納し、グラフを描写
    function Split(data){
        
        for(let loop=0;loop<3;loop++){

            Chartlabels[loop]=data.databases[loop].labels;
            console.log("ls:",Chartlabels[loop]);

            Chartdata[loop]=data.databases[loop].data;
            console.log("data:",Chartdata[loop]);

            ChartColor[loop]=data.databases[loop].backgroundColor;
            console.log("color:",ChartColor[loop]);

        }

        Chartjs();

    }


</script>


</html>
sample.json
{

    "databases":[
    
        {
    
            "labels":"コーラ",
            
            "data":"50",
            
            "backgroundColor":"rgba(255, 99, 132, 0.2)"
    
        },
    
        {
    
            "labels":"サイダー",
            
            "data":"20",
            
            "backgroundColor":"rgba(54, 162, 235, 0.2)"
        
        },
    
        {
    
            "labels":"緑",
            
            "data":"30",
            
            "backgroundColor":"rgba(75, 192, 192, 0.2)"
        
        }
    
    ]
    
}

その他例

グラフタイプを変えるだけで、簡単にさまざまなグラフにできます。

鶏頭図(polarArea)

ドーナツグラフ(doughnut)

円グラフ(pie)

まとめ

あまり取り上げませんでしたが、オプションで遊んだりしておりました。

その際うまくオプションが反映されない時がありましたが、バージョンによる記述の形式の変更によるものでした。

この記事が何かの参考になれば幸いです。

不明点等ありましたら、お気軽にコメントしていただければと思います。

余談

全く関係ですが、管理人のspotifyのMy Top Songs 2023です。

よかったらシェアしてね!
  • URLをコピーしました!
目次