エリアチャートライブラリ比較
3つの人気ライブラリでエリアチャートを表示し、塗りつぶし表現とスタイルを比較
📊 使用しているサンプルデータ
8ヶ月分のWebサイトトラフィックデータ(ページビュー・訪問者数・新規ユーザー)を使用しています。
[
{
"month": "1月",
"pageviews": 8500,
"visitors": 3200,
"newUsers": 1800
},
{
"month": "2月",
"pageviews": 9200,
"visitors": 3600,
"newUsers": 2100
},
{
"month": "3月",
"pageviews": 11000,
"visitors": 4200,
"newUsers": 2500
},
{
"month": "4月",
"pageviews": 12800,
"visitors": 5100,
"newUsers": 2900
},
{
"month": "5月",
"pageviews": 14500,
"visitors": 5800,
"newUsers": 3200
},
{
"month": "6月",
"pageviews": 13200,
"visitors": 5400,
"newUsers": 2800
},
{
"month": "7月",
"pageviews": 15800,
"visitors": 6200,
"newUsers": 3500
},
{
"month": "8月",
"pageviews": 14200,
"visitors": 5600,
"newUsers": 3000
}
]1. Recharts
専用のAreaChartコンポーネントでグラデーション付きの美しいエリアチャートを描画
✓ グラデーション対応✓ スタック対応✓ レスポンシブ
特徴: SVGのlinearGradientを活用した美しいグラデーション塗りつぶしが可能。 stackIdを設定すれば積み上げエリアチャートにも簡単に切り替えられます。
tsx
'use client';
import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
const data = [
{ month: '1月', 売上: 4000, 費用: 2400 },
{ month: '2月', 売上: 3000, 費用: 1398 },
{ month: '3月', 売上: 5000, 費用: 2800 },
{ month: '4月', 売上: 4500, 費用: 3908 },
{ month: '5月', 売上: 6000, 費用: 4800 },
{ month: '6月', 売上: 5500, 費用: 3800 },
];
export function RechartsAreaChart() {
return (
<ResponsiveContainer width="100%" height={300}>
<AreaChart data={data}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="month" />
<YAxis />
<Tooltip />
<Legend />
<Area type="monotone" dataKey="売上" stroke="#3b82f6" fill="#93c5fd" fillOpacity={0.6} />
<Area type="monotone" dataKey="費用" stroke="#10b981" fill="#6ee7b7" fillOpacity={0.6} />
</AreaChart>
</ResponsiveContainer>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Rechartsを使ったエリアチャートを実装してください。 - 使用ライブラリ: recharts(AreaChart、Area、XAxis、YAxis、CartesianGrid、Tooltip、Legend、ResponsiveContainer) - サンプルデータ: 月別Webサイトトラフィック(ページビュー数・訪問者数・新規ユーザー数)を用意すること - インタラクティブ: ホバー時にツールチップで詳細な数値を表示すること - 凡例: 各データ系列の凡例をチャートに表示すること - レスポンシブ: ResponsiveContainerで親要素の幅に応じてチャートサイズが変わるよう対応すること - スタイリング: SVGのlinearGradientを活用したグラデーション塗りつぶしでエリア部分を表現し、重なっても見やすいデザインにすること
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
2. Nivo
ResponsiveLineのenableAreaオプションで洗練されたエリアチャートを描画
✓ 透明度調整✓ カーブ種類豊富✓ D3.jsパワー
特徴: enableAreaとareaOpacityで簡単にエリアチャートに切り替え可能。 curveプロパティで多数の補間方式(monotoneX、cardinal、catmullRomなど)を選択できます。
tsx
'use client';
import { ResponsiveLine } from '@nivo/line';
const data = [
{
id: '売上',
data: [
{ x: '1月', y: 4000 }, { x: '2月', y: 3000 }, { x: '3月', y: 5000 },
{ x: '4月', y: 4500 }, { x: '5月', y: 6000 }, { x: '6月', y: 5500 },
],
},
];
export function NivoAreaChart() {
return (
<div style={{ height: 300 }}>
<ResponsiveLine
data={data}
margin={{ top: 20, right: 20, bottom: 50, left: 60 }}
xScale={{ type: 'point' }}
yScale={{ type: 'linear', min: 0 }}
enableArea={true}
areaOpacity={0.4}
axisBottom={{ tickRotation: 0 }}
colors={['#3b82f6']}
pointSize={6}
useMesh={true}
/>
</div>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Nivoを使ったエリアチャートを実装してください。 - 使用ライブラリ: @nivo/line(ResponsiveLine) - サンプルデータ: 月別Webサイトトラフィック(ページビュー数・訪問者数・新規ユーザー数)を用意すること - インタラクティブ: ホバー時にツールチップで詳細な数値を表示すること(useMesh: true) - 凡例: 各データ系列の凡例をチャートに表示すること - レスポンシブ: ResponsiveLineで親要素の幅に応じてチャートサイズが変わるよう対応すること - スタイリング: enableAreaとareaOpacityでエリア部分の透明度を設定し、curveプロパティ(monotoneXなど)でラインの形状を指定すること
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
3. Chart.js (react-chartjs-2)
Lineチャートのfillオプションを有効にして高パフォーマンスなエリアチャートを実現
✓ Canvas高速描画✓ Fillerプラグイン✓ 大量データ対応
特徴: Fillerプラグインとfill: trueの組み合わせでエリアチャートを実現。 Canvas描画のため大量データポイントでもスムーズに動作します。
tsx
'use client';
import { Line } from 'react-chartjs-2';
import {
Chart as ChartJS, CategoryScale, LinearScale, PointElement,
LineElement, Title, Tooltip, Legend, Filler,
} from 'chart.js';
ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, Filler);
const labels = ['1月', '2月', '3月', '4月', '5月', '6月'];
const data = {
labels,
datasets: [
{
label: '売上',
data: [4000, 3000, 5000, 4500, 6000, 5500],
borderColor: '#3b82f6',
backgroundColor: 'rgba(59, 130, 246, 0.3)',
fill: true,
},
],
};
export function ChartJSAreaChart() {
return <Line data={data} options={{ responsive: true, maintainAspectRatio: false }} height={300} />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Chart.js(react-chartjs-2)を使ったエリアチャートを実装してください。 - 使用ライブラリ: react-chartjs-2(Line)、chart.js(CategoryScale、LinearScale、PointElement、LineElement、Filler、Tooltip、Legend) - サンプルデータ: 月別Webサイトトラフィック(ページビュー数・訪問者数・新規ユーザー数)を用意すること - インタラクティブ: ホバー時にツールチップで詳細な数値を表示すること - 凡例: 各データ系列の凡例をチャートに表示すること - レスポンシブ: responsive: true、maintainAspectRatio: falseで親要素に合わせてサイズを調整すること - スタイリング: datasetsのfill: trueとFillerプラグインを組み合わせてエリアを塗りつぶし、backgroundColorにRGBAで透明度を設定すること
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
ライブラリ比較
| ライブラリ | グラデーション | 積み上げ対応 | 大量データ | おすすめ用途 |
|---|---|---|---|---|
| Recharts | ◎(SVG定義) | ◎ | △ | ダッシュボード |
| Nivo | ◯(透明度調整) | ◯ | △ | プレゼンテーション |
| Chart.js | ◯(RGBA指定) | ◎ | ◎ | リアルタイムデータ |
エリアチャート vs 折れ線グラフ
📊 エリアチャートが適している場面
- ✓データの量や大きさを視覚的に強調したい場合
- ✓複数データの累積や合計を表現したい場合
- ✓時系列データの全体的なトレンドを把握したい場合
📈 折れ線グラフが適している場面
- ✓データの正確な値の比較が重要な場合
- ✓多数の系列を重ねて表示する場合
- ✓変動パターンの細かい違いを確認したい場合
エリアチャートの選択ポイント
- •Recharts: SVGグラデーションを活用した美しい塗りつぶしが魅力。 stackIdで積み上げエリアチャートも簡単に実装可能。
- •Nivo: enableAreaの切り替えだけで折れ線グラフからエリアチャートに変換可能。 多数のカーブ補間方式で表現の幅が広い。
- •Chart.js: Fillerプラグインで塗りつぶしを実現。Canvas描画のため 大量のデータポイントでもパフォーマンスが安定。
エリアチャートの典型的な使用例
📊 トラフィック分析
Webサイトのページビュー、訪問者数、セッション数の推移を視覚化
💰 売上・収益の推移
複数の収益源を積み上げて全体の売上トレンドを把握
📡 リソース使用量
CPU、メモリ、ネットワーク帯域のリソース消費をモニタリング
📈 マーケット分析
市場シェアの変動や複数商品の販売ボリュームの推移を比較
⚠️ エリアチャート使用時の注意点
- •データ系列が多すぎると塗りつぶしが重なって見づらくなる(2〜4系列が目安)
- •透明度を適切に設定しないと背面のデータが隠れてしまう
- •積み上げエリアチャートでは個別の値の読み取りが難しくなる場合がある
- •正確な値の比較が目的の場合は棒グラフの方が適している