D3.jsを用いてインタラクティブなデータビジュアライゼーションを作成
- 作成日 2025.02.21
- javascript
- javascript

D3.jsは、データを視覚的に表現するための強力なJavaScriptライブラリです。スケーラブルでインタラクティブなグラフやチャートを作成するためのツールセットを提供します。この記事では、D3.jsの基本から実践的な使用例までを詳細に解説します。
目次
D3.jsとは
D3.jsは、データをDOMに結びつけて操作し、視覚化するためのライブラリです。SVG、Canvas、HTMLを用いてデータを表現できます。
D3.jsのインストール
CDN経由で利用する場合:
<script src="https://d3js.org/d3.v7.min.js"></script>
NPMを使用する場合:
npm install d3
基本的なデータのバインディング
D3.jsでは、データをDOM要素に結びつけることで視覚化します。
const data = [10, 20, 30, 40];
d3.select('body')
.selectAll('div')
.data(data)
.enter()
.append('div')
.style('width', d => `${d * 10}px`)
.style('background-color', 'steelblue')
.text(d => d);
SVG要素の作成
SVGを使用してグラフやチャートを描画します。
const svg = d3.select('body')
.append('svg')
.attr('width', 500)
.attr('height', 500);
svg.append('circle')
.attr('cx', 250)
.attr('cy', 250)
.attr('r', 100)
.style('fill', 'orange');
スケールの設定
スケールは、データを視覚化可能な範囲にマッピングするために使用します。
const scale = d3.scaleLinear()
.domain([0, 100])
.range([0, 500]);
console.log(scale(50)); // 250
軸の作成
D3.jsは、軸を簡単に作成するための機能を提供します。
const axis = d3.axisBottom(scale);
d3.select('svg')
.append('g')
.attr('transform', 'translate(0, 50)')
.call(axis);
データ駆動型のグラフ作成
データをもとにバーグラフを描画します。
const data = [100, 200, 300, 400, 500];
svg.selectAll('rect')
.data(data)
.enter()
.append('rect')
.attr('x', (d, i) => i * 60)
.attr('y', d => 500 - d)
.attr('width', 50)
.attr('height', d => d)
.style('fill', 'teal');
インタラクティブなイベントの追加
マウスオーバーやクリックなどのイベントを追加します。
svg.selectAll('rect')
.on('mouseover', function() {
d3.select(this).style('fill', 'orange');
})
.on('mouseout', function() {
d3.select(this).style('fill', 'teal');
});
アニメーションの適用
D3.jsではアニメーションも簡単に実現できます。
svg.selectAll('rect')
.transition()
.duration(1000)
.attr('y', d => 500 - d / 2)
.attr('height', d => d / 2);
レスポンシブなデザイン
画面サイズに応じて調整可能なグラフを作成します。
const width = window.innerWidth;
const height = window.innerHeight;
const responsiveSvg = d3.select('body')
.append('svg')
.attr('width', width)
.attr('height', height);
responsiveSvg.append('circle')
.attr('cx', width / 2)
.attr('cy', height / 2)
.attr('r', 50)
.style('fill', 'blue');
データの取得と処理
D3.jsを用いて外部データを取得し、グラフを描画します。
d3.json('data.json').then(data => {
console.log(data);
});
複雑なチャートの作成
D3.jsを使えば、ヒートマップやツリーマップなど高度なチャートも作成可能です。
まとめ
D3.jsを使用すれば、データの視覚化が効率的に行えます。スケーラビリティやインタラクティブ性を活かし、魅力的なビジュアライゼーションを作成しましょう。
-
前の記事
Vue.jsのヘッドレスCMSと組み合わせたコンテンツ管理システムの構築 2025.02.21
-
次の記事
Railsエラー『SyntaxError: unexpected tLABEL』の解決方法 2025.02.21
コメントを書く