エリアチャートライブラリ比較

4つの人気ライブラリでエリアチャートを表示し、塗りつぶし表現とスタイルを比較

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の回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

4. ApexCharts (react-apexcharts)

グラデーション塗りつぶしとスムーズなアニメーションを標準装備したモダンなエリアチャート

✓ グラデーション内蔵✓ アニメーション✓ ズーム・パン

チャートを読み込み中...

特徴:fill.type: 'gradient' で上から下へのグラデーション塗りつぶしを標準装備。 ズーム・パン機能も内蔵されており、インタラクティブな分析画面に適しています。
tsx
'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サイトトラフィックデータ(ページビュー・訪問者数・新規ユーザー)を使用しています。

関連する逆引きリファレンス