🔰はじめての方へ

【JavaScript】Chart.jsでラベルを表示させたい!

CSS
記事内に広告が含まれています。
スポンサーリンク

自分用のメモとして記事を作成しました。

ラベル表示で悩んでいる方にもお役に立てたらと思います!

今回は下のようなグラフを作成します。

別の記事で、Chart.jsが表示されない件についても記事にしているので、お困りの方はご参照ください!

書き方

HTMLで、プラグイン用のファイルを読み込む

chartjs-plugin-datalabels というプラグインがあるのでそれを使います。

npmから読み込む、CDNで読み込むなどといった方法がありますが、私は今回GitHubからダウンロードして使いました。

ファイルから読み込むためのコードをHTML内に記述します。

Chart.js本体のコードの下に記述するようにします。

JavaScript書き方

ここで重要なのが、plugins: [ChartDataLabels] を記入すること

私はこれの記述が不足しており、かなり時間を無駄にしました。

myPieChart = new Chart(ctx, {
      type: "pie", // 円グラフを使用
      data: {
        labels: ["覚醒", "夢"],
        datasets: [
          {
            backgroundColor: ["#f1d326", "#2daed9"],
            data: [awakePercent, sleepPercent],
          },
        ],
      },
      plugins: [ChartDataLabels],
      options: {
        responsive: true,
        maintainAspectRatio: true, // アスペクト比を維持
        plugins: {
          datalabels: {
            color: "#000",
            font: {
              weight: "bold",
              size: 20,
            },
            formatter: (value, context) => {
              // context.chart.data.labelsからラベルを取得
              const label = context.chart.data.labels[context.dataIndex];
              // ラベルとパーセンテージを返す
              return label + "\n" + value.toFixed(1) + "%";
            },
            // ラベルの表示位置を調整(オプション)
            anchor: "center",
            align: "center",
          },
        },
      },
    });

options の中に「plugins:」 を入力しているので「なんで?」となりがちですが(私はそうでした。。)、

「あらかじめ chartjs-plugin-datalabels というプラグインを使いますよ!」と宣言しておかなくては、なんのこっちゃってなりますよねw

おわりに

初歩的なことかもしれませんが、私が困ったことについて共有させていただきました。

今回作成したグラフを使って簡単なwebアプリを作成したので、興味ある方は覗いてみてください!

覚醒年齢診断
あなたの人生どれだけ起きていますか?