WordPress | CSVを読み込んでChart.jsの棒グラフを描画する方法

WordPress

WordPressでCSVを読み込んでChart.jsの棒グラフを描画する方法を説明する。

完成イメージ

HP、MP、ちから、すばやさをChart.jsの棒グラフで表してみる。

読み込むCSVファイル

グラフの元データとなるCSVファイルを準備する。
CSVファイルのアドレス http://wordpress.diandian.online/wp-content/uploads/2022/06/sample1.csv

キャラ,HP,MP,ちから,すばやさ
ヨシヒコ,330,200,150,90
アリーナ,300,0,200,220
マーニャ,230,300,40,130
ミネア,240,170,80,80

グラフの作成方法

WordPressのカスタムHTMLに下記コードを記述する。

  1. CSVファイルを変数reqに読み込む。
  2. CSVファイルの読み込みが完了したらグラフ用のデータ作成とグラフ描画に進む。
  3. reqを改行(\n)で分割し配列reqArrayに代入する。
    reqArray
    [[キャラ,HP,MP,ちから,すばやさ],
    [ヨシヒコ,330,200,150,90],
    [アリーナ,300,0,200,220],
    [マーニャ,230,300,40,130],
    [ミネア,240,170,80,80]]
    となる。
  4. キャラ、HP、MP、ちから、すばやさ、それぞれのデータを作成する。
    キャラは [ヨシヒコ, アリーナ, マーニャ, ミネア]
    HPのデータは [330, 300, 230, 240]
    MPのデータは [200, 0, 300, 170]
    ちからのデータは [150, 200, 40, 80]
    すばやさのデータは [90, 220, 130, 80]
    となる。
<script type="text/javascript"
  src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js">
</script>

<div style="width:100%">
  <canvas id="canvas"></canvas>
</div>

<script>
window.onload = function() {
  let キャラ = [];
  let HPのデータ = [];
  let MPのデータ = [];
  let ちからのデータ = [];
  let すばやさのデータ = [];
  let csvPath = 'http://wordpress.diandian.online/wp-content/uploads/2022/06/sample1.csv'

  let req = new XMLHttpRequest();
  req.open('get', csvPath, true);                                       // 1
  req.send(null);
  req.onload = function() {                                             // 2
    makeGraphData();
    drawGraph();

    function makeGraphData() {
      let reqArray = req.responseText.split('\n');                      // 3
      reqArray.forEach((element) => {                                   // 4
        let 行データ = element.split(',')
        let indexHP = reqArray[0].split(',').indexOf('HP');
        let indexMP = reqArray[0].split(',').indexOf('MP');
        let indexちから = reqArray[0].split(',').indexOf('ちから');
        let indexすばやさ = reqArray[0].split(',').indexOf('すばやさ');
        キャラ.push(行データ[0]);
        if(行データ[indexHP] !== undefined) {
          HPのデータ.push(Number(行データ[indexHP]));
        };
        if(行データ[indexMP] !== undefined) {
          MPのデータ.push(Number(行データ[indexMP]));
        };
        if(行データ[indexちから] !== undefined) {
          ちからのデータ.push(Number(行データ[indexちから]));
        };
        if(行データ[indexすばやさ] !== undefined) {
          すばやさのデータ.push(Number(行データ[indexすばやさ]));
        };
      });
      removeHeader()

      function removeHeader() {
        キャラ.shift();
        HPのデータ.shift();
        MPのデータ.shift();
        ちからのデータ.shift();
        すばやさのデータ.shift();
      };
    };

    function drawGraph() {
      let ctx = document.getElementById('canvas').getContext('2d');
      let グラフ = new Chart(ctx, {
        type: 'bar',
        data: グラフのデータ,
        options: グラフのオプション
      });
    };

  };

  var グラフのデータ = {
    labels: キャラ,
    datasets: [
      {
        label: 'HP',
        data: HPのデータ,
        borderColor     : "rgba(55,155,255,0.7)",
        backgroundColor : "rgba(55,155,255,0.5)",
      },
      {
        label: 'MP',
        data: MPのデータ,
        borderColor     : "rgba(255,100,133,0.7)",
        backgroundColor : "rgba(255,100,133,0.5)",
      },
      {
        label: 'ちから',
        data: ちからのデータ,
        borderColor     : "rgba(55,255,55,0.7)",
        backgroundColor : "rgba(55,255,55,0.5)",
      },
      {
        label: 'すばやさ',
        data: すばやさのデータ,
        borderColor     : "rgba(255,222,133,0.7)",
        backgroundColor : "rgba(255,222,133,0.5)",
      },
    ],
  };

  var グラフのオプション = {
    responsive: true,
    scales: {
      yAxes: [
        {
          scaleLabel: {
            display: true,
            labelString: 'あたい'
          }
        }
      ]
    }
  };
};

</script>

CSV読み込み部以外については下記記事と同じ。

まとめ

WordPressでCSVを読み込んでChart.jsの棒グラフを描画する方法を説明した。

コメント

タイトルとURLをコピーしました