棒グラフライブラリ比較
6つの人気ライブラリで同じデータを表示し、実装方法とスタイルを比較。ECharts v6の軸ブレイク(Axis Break)デモも収録。
1. Recharts (shadcn/ui風)
React向けの宣言的なチャートライブラリ。shadcn/uiのChartsコンポーネントもRechartsをベースにしています。
'use client';
import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
const data = [
{ month: '1月', sales: 4200, target: 4000 },
{ month: '2月', sales: 3800, target: 4000 },
{ month: '3月', sales: 5100, target: 5000 },
{ month: '4月', sales: 4600, target: 4500 },
{ month: '5月', sales: 5400, target: 5000 },
{ month: '6月', sales: 4900, target: 5000 },
];
export function RechartsBarChart() {
return (
<ResponsiveContainer width="100%" height={300}>
<BarChart data={data}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="month" />
<YAxis />
<Tooltip />
<Legend />
<Bar dataKey="sales" fill="#3b82f6" name="売上" radius={[4, 4, 0, 0]} />
<Bar dataKey="target" fill="#10b981" name="目標" radius={[4, 4, 0, 0]} />
</BarChart>
</ResponsiveContainer>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Rechartsを使った棒グラフを実装してください。 - 使用ライブラリ: recharts の BarChart - サンプルデータ: 6ヶ月分の月別売上と目標値 - ホバー時にツールチップで数値を表示 - 凡例を表示 - 親要素の幅に合わせてレスポンシブ対応 - X軸に月名、Y軸に売上金額を表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
2. Nivo
D3.jsベースの高品質なReactチャートライブラリ。美しいデザインとアニメーションが特徴。
'use client';
import { ResponsiveBar } from '@nivo/bar';
const data = [
{ month: '1月', sales: 4200, target: 4000 },
{ month: '2月', sales: 3800, target: 4000 },
{ month: '3月', sales: 5100, target: 5000 },
{ month: '4月', sales: 4600, target: 4500 },
{ month: '5月', sales: 5400, target: 5000 },
{ month: '6月', sales: 4900, target: 5000 },
];
export function NivoBarChart() {
return (
<div style={{ height: 300 }}>
<ResponsiveBar
data={data}
keys={['sales', 'target']}
indexBy="month"
margin={{ top: 20, right: 130, bottom: 50, left: 60 }}
padding={0.3}
groupMode="grouped"
colors={['#3b82f6', '#10b981']}
borderRadius={4}
legends={[{
dataFrom: 'keys',
anchor: 'bottom-right',
direction: 'column',
itemWidth: 100,
itemHeight: 20,
}]}
/>
</div>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Nivoを使った棒グラフを実装してください。 - 使用ライブラリ: @nivo/bar の ResponsiveBar - サンプルデータ: 6ヶ月分の月別売上と目標値 - ホバー時にツールチップで数値を表示 - 凡例を表示 - 親要素の幅に合わせてレスポンシブ対応 - X軸に月名、Y軸に売上金額を表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
3. Chart.js (react-chartjs-2)
最も人気のあるJavaScriptチャートライブラリの一つ。シンプルで軽量、豊富なドキュメント。
'use client';
import { Bar } from 'react-chartjs-2';
import {
Chart as ChartJS, CategoryScale, LinearScale,
BarElement, Title, Tooltip, Legend,
} from 'chart.js';
ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend);
const labels = ['1月', '2月', '3月', '4月', '5月', '6月'];
const data = {
labels,
datasets: [
{
label: '売上',
data: [4200, 3800, 5100, 4600, 5400, 4900],
backgroundColor: 'rgba(59, 130, 246, 0.8)',
},
{
label: '目標',
data: [4000, 4000, 5000, 4500, 5000, 5000],
backgroundColor: 'rgba(16, 185, 129, 0.8)',
},
],
};
export function ChartJSBarChart() {
return <Bar data={data} options={{ responsive: true, maintainAspectRatio: false }} height={300} />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Chart.jsを使った棒グラフを実装してください。 - 使用ライブラリ: react-chartjs-2 の Bar - サンプルデータ: 6ヶ月分の月別売上と目標値 - ホバー時にツールチップで数値を表示 - 凡例を表示 - 親要素の幅に合わせてレスポンシブ対応 - X軸に月名、Y軸に売上金額を表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
4. Plotly.js (react-plotly.js)
ズーム・パン・ホバーなどのインタラクティブ機能が標準装備。科学系・統計系グラフに特に強い。
チャートを読み込み中...
plotly.js-dist-min の使用を推奨。SSRには非対応のためdynamic importが必要。'use client';
import dynamic from 'next/dynamic';
const Plot = dynamic(() => import('react-plotly.js'), { ssr: false });
export function PlotlyBarChart() {
return (
<Plot
data={[
{
type: 'bar',
x: ['1月', '2月', '3月', '4月', '5月', '6月'],
y: [4200, 3800, 5100, 4600, 5400, 4900],
name: '売上',
marker: { color: '#6366f1' },
},
{
type: 'bar',
x: ['1月', '2月', '3月', '4月', '5月', '6月'],
y: [4000, 4000, 5000, 4500, 5000, 5000],
name: '目標',
marker: { color: '#a5b4fc' },
},
]}
layout={{
title: { text: '月別売上比較' },
barmode: 'group',
height: 300,
margin: { t: 40, b: 40, l: 60, r: 20 },
}}
style={{ width: '100%' }}
config={{ responsive: true }}
/>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Plotly.jsを使った棒グラフを実装してください。 - 使用ライブラリ: react-plotly.js + plotly.js-dist-min - Next.js App Router環境のため dynamic import で SSR を無効化 - サンプルデータ: 6ヶ月分の月別売上と目標値 - ホバー時にツールチップで数値を表示 - グループ棒グラフ(barmode: 'group') - 親要素の幅に合わせてレスポンシブ対応
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
5. Apache ECharts (echarts-for-react)
Baiduが開発した高機能チャートライブラリ。JSONベースの設定で直感的に記述でき、カスタマイズ性が非常に高い。
チャートを読み込み中...
'use client';
import dynamic from 'next/dynamic';
const ReactECharts = dynamic(() => import('echarts-for-react'), { ssr: false });
export function EChartsBarChart() {
const option = {
tooltip: { trigger: 'axis' },
legend: { data: ['売上', '目標'], top: 'top' },
xAxis: { type: 'category', data: ['1月', '2月', '3月', '4月', '5月', '6月'] },
yAxis: { type: 'value' },
series: [
{ name: '売上', type: 'bar', data: [4200, 3800, 5100, 4600, 5400, 4900] },
{ name: '目標', type: 'bar', data: [4000, 4000, 5000, 4500, 5000, 5000] },
],
};
return <ReactECharts option={option} style={{ height: 300 }} />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Apache EChartsを使った棒グラフを実装してください。 - 使用ライブラリ: echarts-for-react + echarts - Next.js App Router環境のため dynamic import で SSR を無効化 - サンプルデータ: 6ヶ月分の月別売上と目標値 - ホバー時にツールチップで数値を表示 - 凡例を表示 - JSONベースの option オブジェクトで設定
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
6. ApexCharts (react-apexcharts)
JSONベースの設定で直感的に記述でき、ズーム・パン・ツールバーが標準装備。ダッシュボードや業務アプリに最適なモダンチャートライブラリ。
チャートを読み込み中...
'use client';
import dynamic from 'next/dynamic';
const Chart = dynamic(() => import('react-apexcharts'), { ssr: false });
export function ApexBarChart() {
const options = {
chart: { type: 'bar' as const, toolbar: { show: false } },
xaxis: { categories: ['1月', '2月', '3月', '4月', '5月', '6月'] },
plotOptions: { bar: { borderRadius: 4, columnWidth: '60%' } },
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="bar" options={options} series={series} height={300} width="100%" />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、ApexChartsを使った棒グラフを実装してください。 - 使用ライブラリ: react-apexcharts + apexcharts - Next.js App Router環境のため dynamic import で SSR を無効化 - サンプルデータ: 6ヶ月分の月別売上と目標値 - ホバー時にツールチップで数値を表示 - 親要素の幅に合わせてレスポンシブ対応
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
7. Apache ECharts — 軸ブレイク(Axis Break)
値の差が極端に大きいデータを扱うとき、通常の棒グラフでは小さい値の差が見えにくくなる。軸ブレイク(zigzag)を使うと、y軸の一部を省略して表示でき、全体のバランスを保ちながら小さな差も確認できる。クリックで省略部分を展開することも可能。
チャートを読み込み中...
AxisBreak を echarts/features からインポートして登録する必要がある。yAxis.breaks の start/end でデータに合わせて省略範囲を指定する。'use client';
import dynamic from 'next/dynamic';
import * as echarts from 'echarts/core';
import { AxisBreak } from 'echarts/features';
echarts.use([AxisBreak]);
const ReactECharts = dynamic(() => import('echarts-for-react'), { ssr: false });
const data = [
{ name: 'A社', value: 120 },
{ name: 'B社', value: 980 },
{ name: 'C社', value: 95 },
{ name: 'D社', value: 140 },
{ name: 'E社', value: 110 },
];
export function EChartsAxisBreakChart() {
const option = {
tooltip: {
trigger: 'axis',
axisPointer: { type: 'shadow' },
},
xAxis: {
type: 'category',
data: data.map(d => d.name),
},
yAxis: {
type: 'value',
breaks: [
{ start: 250, end: 800 },
],
},
series: [
{
type: 'bar',
data: data.map(d => d.value),
itemStyle: { color: '#6366f1' },
},
],
};
return <ReactECharts option={option} style={{ height: 300 }} />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Apache ECharts v6の軸ブレイク(Axis Break)機能を使った棒グラフを実装してください。 - 使用ライブラリ: echarts-for-react + echarts - Next.js App Router環境のため dynamic import で SSR を無効化 - AxisBreak を echarts/features からインポートして echarts.use() で登録する - 値の差が極端に大きいサンプルデータ(例: A社120、B社980、C社95) - yAxis.breaks で省略範囲(start/end)を指定してy軸の一部を zigzag 表示 - ホバー時にツールチップで数値を表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
ライブラリ比較
| ライブラリ | レンダリング | 学習コスト | カスタマイズ性 | おすすめ用途 |
|---|---|---|---|---|
| Recharts | SVG | 低 | 高 | React アプリ全般 |
| Nivo | SVG | 中 | 高 | デザイン重視のダッシュボード |
| Chart.js | Canvas | 低 | 中 | 大量データ・高パフォーマンス |
| Plotly.js | SVG/WebGL | 中 | 高 | 科学系・統計系グラフ |
| Apache ECharts | Canvas/SVG | 中 | 非常に高い | エンタープライズダッシュボード |
| ApexCharts | SVG | 低 | 高 | ダッシュボード・業務アプリ全般 |
選択のポイント
- •Recharts: Reactプロジェクトで標準的なチャートが必要な場合。 shadcn/uiと組み合わせる場合にも最適。
- •Nivo: デザイン性を重視し、美しいアニメーションが欲しい場合。 ダッシュボードやプレゼンテーション向け。
- •Chart.js: 大量のデータポイントを扱う場合や、 パフォーマンスが重要な場合。広く使われているため情報も豊富。
- •Plotly.js: ズーム・パン・ホバーなどのインタラクティブ機能が標準装備で、科学系・統計系グラフに特に強い。3Dグラフや等高線図など高度な可視化が必要な場合に最適。バンドルサイズが大きいため
plotly.js-dist-minの使用を推奨。 - •Apache ECharts: Baiduが開発した高機能チャートライブラリ。カスタマイズ性が非常に高く、ダッシュボード構築に適している。EChartsのオプション設定はJSONベースで直感的に書けるため、複雑なグラフも宣言的に実装できる。
- •ApexCharts: JSONベースの設定で直感的に記述でき、ズーム・パン・ツールバーが標準装備。ダッシュボードや業務アプリに最適。学習コストが低く導入しやすい。
棒グラフ(バーチャート)は、カテゴリ別のデータを棒の長さで比較するグラフ。数値の大小を直感的に伝えられる最も基本的なグラフの一つ。
商品別売上・部門別実績・アンケート結果など、カテゴリ間の数値比較を行う場面で幅広く使われる。
- •縦棒型(VerticalBar)
- •横棒型(HorizontalBar)
- •グループ棒型(複数系列)
- •積み上げ棒型
- •ラベル付き型
📊 使用しているサンプルデータ(クリックで表示)
6ヶ月分の月別売上と目標のデータを使用しています。
関連する逆引きリファレンス
- → 色・スタイルのカスタマイズ(borderColor・fillOpacity など)
- → ツールチップのカスタマイズ(カスタムHTML・フォーマッタ)
- → 軸(Axis)の設定(ラベルフォーマット・対数スケール・複数軸)
- → レスポンシブ対応(コンテナ追従・アスペクト比・リサイズ)
- → アニメーション・トランジション(初期描画・データ更新・イージング)
- → 凡例(Legend)の配置・スタイル(位置・アイコン・系列トグル)
- → データラベルの表示(値・位置・フォーマッタ)
- → クリックイベント・インタラクション(クリック・ホバー・ブラシ選択)
- → グリッド線のカスタマイズ(表示制御・線スタイル・リファレンスライン)