HTML5でcanvas要素を使ってグラフを描画する方法を現役エンジニアが解説【初心者向け】
初心者向けにHTML5でcanvas要素を使ってグラフを描画する方法について解説しています。canvasはHTML5で追加された要素で、HTMLでグラフィックを描画することができます。canvas要素の基本の使い方、グラフの作成例について見ていきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
HTML5でcanvas要素を使ってグラフを描画する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
そもそも、HTMLの記述方法がわからない場合はHTMLの書き方について解説した記事を読むとさらに理解が深まるでしょう。
なお本記事は、TechAcademyのオンラインブートキャンプWebデザイン講座のHTMLカリキュラムをもとに執筆しています。

今回は、HTMLに関する内容だね!

どういう内容でしょうか?

canvas要素を使ってグラフを描画する方法について詳しく説明していくね!

お願いします!
目次
グラフを描画する方法
HTML5ではcanvas要素が追加され、JavaScriptでグラフを描画できるようになりました。
canvas要素とは
HTMLの<canvas>要素を使用するとJavaScriptでグラフィックを描画することができます。グラフィックの描画はCanvasAPIと呼ばれる命令群で行います。
canvas要素はグラフィックの描画だけでなく、アニメーションやゲーム、写真加工のツールなど様々な用途に利用されています。
canvas要素を使ってグラフを描画してみよう
今回のサンプルプログラムではcanvas要素を使ってグラフを描画する方法について確認します。canvas要素の原点は左上です。
数学の座標系の原点は一般的に左下であるため注意しましょう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sample</title>
</head>
<body>
<canvas id="canvas" width="500" height="400"></canvas>
<script>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const W = 500;
const H = 400;
// x軸の描画
ctx.beginPath();
ctx.moveTo(10, H-20);
ctx.lineTo(W-10, H-20);
ctx.closePath();
ctx.stroke();
// y軸の描画
ctx.beginPath();
ctx.moveTo(20, H-10);
ctx.lineTo(20, 10);
ctx.closePath();
ctx.stroke();
// 棒グラフ1
ctx.fillStyle = 'green';
let bar = 100;
ctx.fillRect(20, H-bar-20, 50, bar);
// 棒グラフ2
ctx.fillStyle = 'red';
bar = 200;
ctx.fillRect(70, H-bar-20, 50, bar);
// 棒グラフ2
ctx.fillStyle = 'yellow';
bar = 300;
ctx.fillRect(120, H-bar-20, 50, bar);
</script>
</body>
</html>
実行結果は以下のようになります。
今回は非常に基本的な命令だけを使用してグラフを描画したためソースコードも長くなっているものの、様々なライブラリも提供されているため、探してみると良いでしょう。

まとめ
今回の記事ではHTML5でcanvas要素を使ってグラフを描画する方法について学習しました。
執筆してくれたメンター
| 太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。 守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握、音声認識を活用したヘルプデスク支援システム、ロボットアプリの開発、大規模基幹系システムの開発・導入マネジメント。 著書「知識ゼロからの機械学習入門(技術評論社)」。 地方在住。 仕事のほとんどをリモートオフィスで行う。 通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは初心者でも、オリジナルWebサイトを公開できる、オンラインブートキャンプを開催しています。
また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。