折れ線グラフライブラリ比較

6つの人気ライブラリで時系列データを表示し、実装方法とスタイルを比較

1. Recharts

滑らかな曲線とアニメーションで時系列データの推移を視覚化

✓ スムーズなアニメーション✓ インタラクティブ✓ レスポンシブ
特徴: 曲線の種類(monotone、linear、step)を簡単に変更可能。 ホバー時のアニメーションやツールチップが標準で実装されています。
tsx
'use client';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';

const data = [
  { month: '1月', 売上: 4200, 目標: 4000 },
  { month: '2月', 売上: 3800, 目標: 4000 },
  { month: '3月', 売上: 5100, 目標: 5000 },
  { month: '4月', 売上: 4600, 目標: 4500 },
  { month: '5月', 売上: 5400, 目標: 5000 },
  { month: '6月', 売上: 4900, 目標: 5000 },
];

export function RechartsLineChart() {
  return (
    <ResponsiveContainer width="100%" height={300}>
      <LineChart data={data}>
        <CartesianGrid strokeDasharray="3 3" />
        <XAxis dataKey="month" />
        <YAxis />
        <Tooltip />
        <Legend />
        <Line type="monotone" dataKey="売上" stroke="#3b82f6" strokeWidth={2} dot={{ r: 4 }} />
        <Line type="monotone" dataKey="目標" stroke="#10b981" strokeWidth={2} strokeDasharray="5 5" />
      </LineChart>
    </ResponsiveContainer>
  );
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、Rechartsを使った折れ線グラフを実装してください。

- 使用ライブラリ: recharts(LineChart、Line、XAxis、YAxis、CartesianGrid、Tooltip、Legend、ResponsiveContainer)
- サンプルデータ: 8ヶ月分の月別ユーザー数とセッション数のデータを用意すること
- インタラクティブ: ホバー時にツールチップで正確な数値を表示すること
- 凡例: 複数のデータ系列の凡例を表示すること
- レスポンシブ: ResponsiveContainerで親要素の幅に応じてチャートサイズが変わるよう対応すること
- データポイント: dotプロパティで各データ点にドットを表示し、activeDotでホバー時のドットサイズを変えること。曲線の種類はtype="monotone"を指定すること

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

2. Nivo

洗練されたデザインと豊富なカスタマイズオプション

✓ 美しいデフォルト✓ エリアチャート対応✓ D3.jsパワー
特徴: エリアチャートへの切り替えが容易で、グラデーションなどの 高度なビジュアル表現も可能。ポイントのカスタマイズも豊富。
tsx
'use client';
import { ResponsiveLine } from '@nivo/line';

const data = [
  {
    id: '売上',
    data: [
      { x: '1月', y: 4200 }, { x: '2月', y: 3800 }, { x: '3月', y: 5100 },
      { x: '4月', y: 4600 }, { x: '5月', y: 5400 }, { x: '6月', y: 4900 },
    ],
  },
  {
    id: '目標',
    data: [
      { x: '1月', y: 4000 }, { x: '2月', y: 4000 }, { x: '3月', y: 5000 },
      { x: '4月', y: 4500 }, { x: '5月', y: 5000 }, { x: '6月', y: 5000 },
    ],
  },
];

export function NivoLineChart() {
  return (
    <div style={{ height: 300 }}>
      <ResponsiveLine
        data={data}
        margin={{ top: 20, right: 110, bottom: 50, left: 60 }}
        xScale={{ type: 'point' }}
        yScale={{ type: 'linear', min: 'auto' }}
        axisBottom={{ tickRotation: 0 }}
        colors={['#3b82f6', '#10b981']}
        pointSize={6}
        useMesh={true}
        legends={[{ anchor: 'bottom-right', direction: 'column', itemWidth: 80, itemHeight: 20 }]}
      />
    </div>
  );
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、Nivoを使った折れ線グラフを実装してください。

- 使用ライブラリ: @nivo/line(ResponsiveLine)
- サンプルデータ: 8ヶ月分の月別ユーザー数とセッション数のデータをNivo形式({id, data: [{x, y}]})で用意すること
- インタラクティブ: ホバー時にツールチップで正確な数値を表示すること(useMesh: true)
- 凡例: 複数のデータ系列の凡例を表示すること
- レスポンシブ: ResponsiveLineで親要素の幅に応じてチャートサイズが変わるよう対応すること
- データポイント: pointSizeとpointColorでドットのスタイルを設定し、curveプロパティ(monotoneXなど)で曲線の形状を指定すること

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

3. Chart.js (react-chartjs-2)

高パフォーマンスで大量のデータポイントもスムーズに描画

✓ Canvas描画✓ 高速✓ プラグイン豊富
特徴: Canvas APIを使用しているため、数千のデータポイントでも スムーズに動作。tensionパラメータで曲線の滑らかさを調整可能。
tsx
'use client';
import { Line } from 'react-chartjs-2';
import {
  Chart as ChartJS, CategoryScale, LinearScale, PointElement,
  LineElement, Title, Tooltip, Legend,
} from 'chart.js';

ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend);

const labels = ['1月', '2月', '3月', '4月', '5月', '6月'];

const data = {
  labels,
  datasets: [
    {
      label: '売上',
      data: [4200, 3800, 5100, 4600, 5400, 4900],
      borderColor: '#3b82f6',
      backgroundColor: 'rgba(59, 130, 246, 0.1)',
      tension: 0.4,
    },
    {
      label: '目標',
      data: [4000, 4000, 5000, 4500, 5000, 5000],
      borderColor: '#10b981',
      backgroundColor: 'rgba(16, 185, 129, 0.1)',
      borderDash: [5, 5],
    },
  ],
};

export function ChartJSLineChart() {
  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、Title、Tooltip、Legend)
- サンプルデータ: 8ヶ月分の月別ユーザー数とセッション数のデータを用意すること
- インタラクティブ: ホバー時にツールチップで正確な数値を表示すること
- 凡例: 複数のデータ系列の凡例を表示すること
- レスポンシブ: responsive: true、maintainAspectRatio: falseで親要素に合わせてサイズを調整すること
- データポイント: datasetsのtensionパラメータで曲線の滑らかさを調整し、pointRadiusでドットサイズを設定すること

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

4. Plotly.js (react-plotly.js)

ズーム・パン・ホバーなどのインタラクティブ機能が標準装備。時系列データの詳細分析に最適。

✓ ズーム・パン標準✓ インタラクティブ✓ 複数系列対応

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

特徴: ズーム・パン・ホバーなどのインタラクティブ機能が標準装備。 SSRには非対応のためdynamic importが必要。
tsx
'use client';
import dynamic from 'next/dynamic';
const Plot = dynamic(() => import('react-plotly.js'), { ssr: false });

export function PlotlyLineChart() {
  return (
    <Plot
      data={[{
        type: 'scatter',
        mode: 'lines+markers',
        x: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月'],
        y: [1200, 1400, 1800, 2200, 2600, 3000, 3200, 2800],
        name: 'ユーザー数',
        line: { color: '#6366f1', width: 2 },
      }]}
      layout={{ title: { text: '月別ユーザー数推移' }, height: 300, margin: { t: 40, b: 40, l: 60, r: 20 } }}
      style={{ width: '100%' }}
      config={{ responsive: true }}
    />
  );
}

5. Apache ECharts (echarts-for-react)

JSONベースの設定で直感的に記述できる高機能チャートライブラリ。スムーズな曲線も簡単に実装。

✓ 高カスタマイズ性✓ スムーズ曲線✓ JSONベース設定

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

特徴: smooth: true でスムーズな曲線を簡単に実装。 SSRには非対応のためdynamic importが必要。
tsx
'use client';
import dynamic from 'next/dynamic';
const ReactECharts = dynamic(() => import('echarts-for-react'), { ssr: false });

export function EChartsLineChart() {
  const option = {
    tooltip: { trigger: 'axis' },
    xAxis: { type: 'category', data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月'] },
    yAxis: { type: 'value' },
    series: [
      { name: 'ユーザー数', type: 'line', smooth: true, data: [1200, 1400, 1800, 2200, 2600, 3000, 3200, 2800] },
      { name: 'セッション数', type: 'line', smooth: true, data: [1800, 2100, 2600, 3100, 3700, 4200, 4500, 4000] },
    ],
  };
  return <ReactECharts option={option} style={{ height: 300 }} />;
}

6. ApexCharts (react-apexcharts)

JSONベースの設定で直感的に記述でき、ズーム・パン・ツールバーが標準装備。スムーズな曲線もオプション一つで設定できる。

✓ ズーム・パン標準✓ スムーズ曲線✓ ダッシュボード向け

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

特徴: stroke.curveで曲線タイプを簡単に切り替え可能。SSRには非対応のためdynamic importが必要。
tsx
'use client';
import dynamic from 'next/dynamic';
const Chart = dynamic(() => import('react-apexcharts'), { ssr: false });

export function ApexLineChart() {
  const options = {
    chart: { type: 'line' as const, toolbar: { show: false } },
    xaxis: { categories: ['1月', '2月', '3月', '4月', '5月', '6月'] },
    stroke: { curve: 'smooth' as const, width: 2 },
    markers: { size: 4 },
    dataLabels: { enabled: false },
    colors: ['#3b82f6', '#10b981'],
    tooltip: { y: { formatter: (val: number) => val.toLocaleString() } },
  };
  const series = [
    { name: '売上', data: [4200, 3800, 5100, 4600, 5400, 4900] },
    { name: '目標', data: [4000, 4000, 5000, 4500, 5000, 5000] },
  ];
  return <Chart type="line" options={options} series={series} height={300} width="100%" />;
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、ApexChartsを使った折れ線グラフを実装してください。
- 使用ライブラリ: react-apexcharts + apexcharts
- Next.js App Router環境のため dynamic import で SSR を無効化
- サンプルデータ: 6ヶ月分の月別売上と目標値
- stroke.curve: 'smooth' でスムーズな曲線を表示
- ホバー時にツールチップで数値を表示
- 親要素の幅に合わせてレスポンシブ対応

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

ライブラリ比較

ライブラリ曲線の種類エリア塗りつぶし大量データおすすめ用途
Rechartsmonotone, linear, stepダッシュボード
Nivo多数のカーブタイププレゼンテーション
Chart.jslinear, monotoneリアルタイムデータ
Plotly.jslinear, spline科学系・統計分析
Apache EChartslinear, smoothエンタープライズダッシュボード
ApexChartssmooth, straight, steplineダッシュボード・業務アプリ全般

折れ線グラフの選択ポイント

  • Recharts: Reactアプリで一般的な時系列データを表示する場合。 インタラクティブなツールチップが必要な場合に最適。
  • Nivo: エリアチャートや複雑なスタイリングが必要な場合。 プレゼンテーションやレポート向けの美しいビジュアルが欲しい時。
  • Chart.js: リアルタイムデータの更新や、数千以上のデータポイントを 扱う場合。パフォーマンスが最優先の時に選択。
  • Plotly.js: ズーム・パン・ホバーなどのインタラクティブ機能が標準装備で、科学系・統計系グラフに特に強い。3Dグラフや等高線図など高度な可視化が必要な場合に最適。
  • Apache ECharts: カスタマイズ性が非常に高く、ダッシュボード構築に適している。JSONベースのオプション設定で複雑なグラフも宣言的に実装できる。
  • ApexCharts: JSONベースの設定で直感的に記述でき、ズーム・パン・ツールバーが標準装備。ダッシュボードや業務アプリに最適。

折れ線グラフの典型的な使用例

📊 時系列分析

売上、ユーザー数、アクセス数などの時間経過に伴う変化を追跡

📈 トレンド分析

データの傾向や周期性を視覚的に把握

🔄 比較分析

複数の指標を同時に表示して相関関係を分析

⚡ リアルタイム監視

サーバーメトリクス、株価、センサーデータなどのライブ更新

折れ線グラフ(ラインチャート)は、時系列または順序データの推移を線で結んで表現するグラフ。トレンドや変化のパターンを把握するのに適している。

株価・気温・売上推移・Webトラフィックなど、時系列データの変化を追跡する場面で幅広く使われる。

主なバリエーション
  • 単一系列型
  • 複数系列型(凡例付き)
  • 曲線型(スムーズ補間)
  • ステップ型
  • データポイントマーカー付き型

📈 使用しているサンプルデータ(クリックで表示)

8ヶ月分の月別ユーザー数とセッション数のデータを使用しています。

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