ユーザーが入力した値をグラフ表示する
▼ サンプルサイトは、こちら
https://ki-hi-ro.com/sample/chart/
実装方法
chart.jsを使用しました。https://cdnjs.com/libraries/Chart.js
このサイトから、URLをコピーして、bodyを閉じるタグの直前で読み込ませます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.js"></script> </body>
グラフを表示させたい箇所には、この記述をします。
<canvas id="myPieChart"></canvas>
また、chart.jsを読み込む記述とbodyを閉じるタグの間に、以下のように記述を追加します。
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.js"></script> <script> var ctx = document.getElementById("myPieChart"); // ボタンをクリックした時に $('.complete-btn').click(function(){ // 入力値を取得して、変数に代入 var tokyo = $('.tokyo').val(); var osaka = $('.osaka').val(); var nagoya = $('.nagoya').val(); var sapporo = $('.sapporo').val(); // グラフの設定 var myPieChart = new Chart(ctx, { // ドーナツ型 type: 'doughnut', data: { labels: ["東京", "大阪", "名古屋", "札幌"], datasets: [{ backgroundColor: [ "#e0e0e0", "#a0a0a0", "#606060", "#202020" ], // 入力値が入っている変数を利用 data: [tokyo, osaka, nagoya, sapporo] }] }, options: { title: { display: true, text: '都市の人口' } } }); }) </script> </body>
これで、完成です。
参考資料:
Chart.js · Chart.js 日本語ドキュメント
サンプルサイトのソースコード
HTML
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>chart</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="shortcut icon" href="favicon.ico"> <link rel="stylesheet" href="style.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> </head> <body> <canvas id="myPieChart"></canvas> <div class="input-area"> <div class="input-area__inner"> <p>東京</p> <input class="chart tokyo" type="number"> <span>万人</span> <p>大阪</p> <input class="chart osaka" type="number"> <span>万人</span> <p>名古屋</p> <input class="chart nagoya" type="number"> <span>万人</span> <p>札幌</p> <input class="chart sapporo" type="number"> <span>万人</span> <button class="complete-btn">入力完了</button> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.js"></script> <script> var ctx = document.getElementById("myPieChart"); // ボタンをクリックした時 $('.complete-btn').click(function(){ // 入力値を取得して、変数に代入 var tokyo = $('.tokyo').val(); var osaka = $('.osaka').val(); var nagoya = $('.nagoya').val(); var sapporo = $('.sapporo').val(); // グラフの設定 var myPieChart = new Chart(ctx, { // ドーナツ型 type: 'doughnut', data: { labels: ["東京", "大阪", "名古屋", "札幌"], datasets: [{ backgroundColor: [ "#e0e0e0", "#a0a0a0", "#606060", "#202020" ], // 入力した値が入った変数を利用 data: [tokyo, osaka, nagoya, sapporo] }] }, options: { title: { display: true, text: '都市の人口' } } }); }) </script> </body> </html>
CSS
.complete-btn { width: 90%; display: block; margin-top: 50px; border: 1px solid black; background-color: #fff; padding: 15px 0; font-size: 100%; } .input-area { width: 50%; display: flex; justify-content: center; padding-left: 10px; } p { margin: 15px 0; } .chart { border: 1px solid black; text-align: right; padding: 3px; font-size: 100%; } body { display: flex; } @media (max-width: 600px) { body { display: block; } .input-area { width: 100%; display: flex; justify-content: center; padding-left: 10px; } }