エリアチャートライブラリ比較
4つの人気ライブラリでエリアチャートを表示し、塗りつぶし表現とスタイルを比較
1. Recharts
専用のAreaChartコンポーネントでグラデーション付きの美しいエリアチャートを描画
'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オプションで洗練されたエリアチャートを描画
'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オプションを有効にして高パフォーマンスなエリアチャートを実現
'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の回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
4. ApexCharts (react-apexcharts)
グラデーション塗りつぶしとスムーズなアニメーションを標準装備したモダンなエリアチャート
チャートを読み込み中...
'use client';
import dynamic from 'next/dynamic';
const Chart = dynamic(() => import('react-apexcharts'), { ssr: false });
export function ApexAreaChart() {
const options = {
chart: { type: 'area' as const, toolbar: { show: false } },
xaxis: { categories: ['1月', '2月', '3月', '4月', '5月', '6月'] },
stroke: { curve: 'smooth' as const, width: 2 },
dataLabels: { enabled: false },
fill: { type: 'gradient', gradient: { shadeIntensity: 1, opacityFrom: 0.5, opacityTo: 0.1 } },
colors: ['#3b82f6', '#10b981'],
tooltip: { y: { formatter: (val: number) => val.toLocaleString() } },
};
const series = [
{ name: '売上', data: [4000, 3000, 5000, 4500, 6000, 5500] },
{ name: '費用', data: [2400, 1398, 2800, 3908, 4800, 3800] },
];
return <Chart type="area" options={options} series={series} height={300} width="100%" />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、ApexCharts(react-apexcharts)を使ったエリアチャートを実装してください。
- 使用ライブラリ: react-apexcharts(dynamic importでSSR無効化)
- サンプルデータ: 月別売上と費用(1月〜6月)を用意すること
- インタラクティブ: ホバー時にツールチップで数値を表示すること(formatter で数値フォーマット)
- スタイリング: fill.type: 'gradient' でグラデーション塗りつぶし、stroke.curve: 'smooth' でなめらかなライン
- dataLabels: { enabled: false } でデータラベルを非表示にすること
- chart.toolbar: { show: false } でツールバーを非表示にすること⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
ライブラリ比較
| ライブラリ | グラデーション | 積み上げ対応 | 大量データ | おすすめ用途 |
|---|---|---|---|---|
| Recharts | ◎(SVG定義) | ◎ | △ | ダッシュボード |
| Nivo | ◯(透明度調整) | ◯ | △ | プレゼンテーション |
| Chart.js | ◯(RGBA指定) | ◎ | ◎ | リアルタイムデータ |
| ApexCharts | ◎(グラデーション内蔵) | ◎ | ◯ | ダッシュボード・業務アプリ |
エリアチャート vs 折れ線グラフ
📊 エリアチャートが適している場面
- ✓データの量や大きさを視覚的に強調したい場合
- ✓複数データの累積や合計を表現したい場合
- ✓時系列データの全体的なトレンドを把握したい場合
📈 折れ線グラフが適している場面
- ✓データの正確な値の比較が重要な場合
- ✓多数の系列を重ねて表示する場合
- ✓変動パターンの細かい違いを確認したい場合
エリアチャートの選択ポイント
- •Recharts: SVGグラデーションを活用した美しい塗りつぶしが魅力。 stackIdで積み上げエリアチャートも簡単に実装可能。
- •Nivo: enableAreaの切り替えだけで折れ線グラフからエリアチャートに変換可能。 多数のカーブ補間方式で表現の幅が広い。
- •Chart.js: Fillerプラグインで塗りつぶしを実現。Canvas描画のため 大量のデータポイントでもパフォーマンスが安定。
- •ApexCharts: グラデーション塗りつぶしとアニメーションを標準装備。 ズーム・パン機能も内蔵しており、インタラクティブな分析画面に最適。
エリアチャートの典型的な使用例
📊 トラフィック分析
Webサイトのページビュー、訪問者数、セッション数の推移を視覚化
💰 売上・収益の推移
複数の収益源を積み上げて全体の売上トレンドを把握
📡 リソース使用量
CPU、メモリ、ネットワーク帯域のリソース消費をモニタリング
📈 マーケット分析
市場シェアの変動や複数商品の販売ボリュームの推移を比較
⚠️ エリアチャート使用時の注意点
- •データ系列が多すぎると塗りつぶしが重なって見づらくなる(2〜4系列が目安)
- •透明度を適切に設定しないと背面のデータが隠れてしまう
- •積み上げエリアチャートでは個別の値の読み取りが難しくなる場合がある
- •正確な値の比較が目的の場合は棒グラフの方が適している
エリアチャート(面グラフ)は、折れ線グラフの下部を塗りつぶして面積を表現したグラフ。時系列データの推移と量感を同時に伝えられる。
売上推移・トラフィック変動・株価チャートなど、時系列の累積量や変化量を視覚的に強調したい場面で使われる。
- •積み上げエリア型
- •正規化積み上げ型(100%)
- •グラデーション塗りつぶし型
- •複数系列型
- •インタラクティブ型(ホバー詳細表示)
📊 使用しているサンプルデータ(クリックで表示)
8ヶ月分のWebサイトトラフィックデータ(ページビュー・訪問者数・新規ユーザー)を使用しています。
関連する逆引きリファレンス
- → 色・スタイルのカスタマイズ(borderColor・fillOpacity など)
- → ツールチップのカスタマイズ(カスタムHTML・フォーマッタ)
- → 軸(Axis)の設定(ラベルフォーマット・対数スケール・複数軸)
- → レスポンシブ対応(コンテナ追従・アスペクト比・リサイズ)
- → アニメーション・トランジション(初期描画・データ更新・イージング)
- → 凡例(Legend)の配置・スタイル(位置・アイコン・系列トグル)
- → データラベルの表示(値・位置・フォーマッタ)
- → クリックイベント・インタラクション(クリック・ホバー・ブラシ選択)
- → グリッド線のカスタマイズ(表示制御・線スタイル・リファレンスライン)