ゲージチャートライブラリ比較
4つのライブラリで同じデータを表示し、実装方法とスタイルを比較
このページでは、Apache ECharts・Plotly.js・ApexCharts・Nivoを使ったゲージチャート(Gauge Chart)の実装パターンをインタラクティブなデモとコードで確認できます。
📊 使用しているサンプルデータ
サーバーのリソース使用率を想定した3指標のデータを使用しています。各ライブラリのデモでは「CPU使用率 72%」を代表値として表示します。
1. Apache ECharts (echarts-for-react)
Baiduが開発した高機能チャートライブラリ。type: 'gauge' でネイティブのゲージチャートを簡単に実装できる。
チャートを読み込み中...
type: 'gauge' を指定するだけで半円形ゲージが描画される。progress.show でプログレスバーを追加でき、複数ゲージの並列表示やグラデーションなど高度なカスタマイズが可能。'use client';
import dynamic from 'next/dynamic';
const ReactECharts = dynamic(() => import('echarts-for-react'), { ssr: false });
export function EChartsGauge() {
const option = {
series: [{
type: 'gauge',
min: 0,
max: 100,
progress: { show: true, width: 18 },
axisLine: { lineStyle: { width: 18 } },
axisTick: { show: false },
splitLine: { length: 15, lineStyle: { width: 2 } },
axisLabel: { distance: 25 },
pointer: { show: true },
detail: {
valueAnimation: true,
formatter: '{value}%',
fontSize: 24,
},
data: [{ value: 72, name: 'CPU使用率' }],
}],
};
return <ReactECharts option={option} style={{ height: 360 }} />;
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Apache EChartsを使ったゲージチャートを実装してください。 - 使用ライブラリ: echarts-for-react の ReactECharts - type: 'gauge' を使用 - 値: 72(CPU使用率)、range: 0〜100 - progress.show: true でプログレスバーを表示 - detail.formatter で値に「%」を付けて表示 - アニメーション付きで値を表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
2. Plotly.js (react-plotly.js)
type: 'indicator'、mode: 'gauge+number' でゲージと数値を同時表示。カラーゾーンと警告ラインの設定も容易。
チャートを読み込み中...
gauge.axis.range で最小・最大を指定し、steps でカラーゾーンを定義できる。KPIパネルとの相性がよく、数値とゲージを一体で見せたい場合に最適。SSRには非対応のためdynamic importが必要。'use client';
import dynamic from 'next/dynamic';
const Plot = dynamic(() => import('react-plotly.js'), { ssr: false });
export function PlotlyGauge() {
return (
<Plot
data={[{
type: 'indicator',
mode: 'gauge+number',
value: 72,
title: { text: 'CPU使用率', font: { size: 16 } },
gauge: {
axis: { range: [0, 100] },
bar: { color: '#4f86c6' },
steps: [
{ range: [0, 50], color: '#e2f0fb' },
{ range: [50, 75], color: '#b8d9f5' },
{ range: [75, 100], color: '#fde8e8' },
],
threshold: {
line: { color: '#ef4444', width: 4 },
thickness: 0.75,
value: 90,
},
},
number: { suffix: '%' },
}]}
layout={{
margin: { t: 60, b: 20, l: 40, r: 40 },
height: 360,
paper_bgcolor: 'transparent',
}}
config={{ displayModeBar: false }}
style={{ width: '100%' }}
/>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Plotly.jsを使ったゲージチャートを実装してください。 - 使用ライブラリ: react-plotly.js(next/dynamicでSSR無効化) - type: 'indicator'、mode: 'gauge+number' を使用 - 値: 72(CPU使用率)、range: 0〜100 - gauge.steps で0-50・50-75・75-100のカラーゾーンを設定 - threshold で警告ラインを90に設定 - number.suffix に「%」を表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
3. ApexCharts (react-apexcharts)
type: 'radialBar' で円弧型のゲージを実装。series に0〜100のパーセンテージ値を渡すだけでシンプルに表示できる。
チャートを読み込み中...
startAngle: -135、endAngle: 135 で半円形ゲージになる。series を配列にすることで複数の指標を同一チャートに並列表示することも容易。SSRには非対応のためdynamic importが必要。'use client';
import dynamic from 'next/dynamic';
const ApexChart = dynamic(() => import('react-apexcharts'), { ssr: false });
export function ApexGauge() {
const series = [72];
const options = {
chart: { type: 'radialBar' as const },
plotOptions: {
radialBar: {
startAngle: -135,
endAngle: 135,
hollow: { size: '60%' },
dataLabels: {
name: { fontSize: '16px', offsetY: -10 },
value: {
fontSize: '28px',
formatter: (val: number) => `${val}%`,
offsetY: 5,
},
},
},
},
labels: ['CPU使用率'],
colors: ['#4f86c6'],
};
return (
<ApexChart
type="radialBar"
series={series}
options={options}
height={360}
width="100%"
/>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、ApexChartsを使ったゲージチャートを実装してください。 - 使用ライブラリ: react-apexcharts(next/dynamicでSSR無効化) - type: 'radialBar' を使用 - series: [72](CPU使用率 72%) - startAngle: -135、endAngle: 135 で半円形ゲージ - dataLabels に名前と値(%付き)を表示 - hollow.size: '60%' で中央を空洞化
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
4. Nivo (@nivo/pie)
Nivoには専用のゲージコンポーネントがないため、@nivo/pie の半円表示で擬似的にゲージを実現する。中央の値表示はカスタムレイヤーで追加する。
startAngle: -90・endAngle: 90 で半円に、innerRadius: 0.7 でドーナツ型にすることでゲージ風の表示を実現。Nivoの洗練されたデザインシステムで統一したい場合に有効。'use client';
import { ResponsivePie } from '@nivo/pie';
// Nivoには専用のゲージコンポーネントがないため、
// @nivo/pie の半円表示で擬似的にゲージを実現する
export function NivoGauge() {
const value = 72;
const remaining = 100 - value;
const data = [
{ id: 'value', value, color: '#4f86c6' },
{ id: 'remaining', value: remaining, color: '#e5e7eb' },
];
return (
<div style={{ height: 360, position: 'relative' }}>
<ResponsivePie
data={data}
startAngle={-90}
endAngle={90}
innerRadius={0.7}
padAngle={1}
colors={d => d.data.color}
enableArcLabels={false}
enableArcLinkLabels={false}
isInteractive={false}
margin={{ top: 20, bottom: 0, left: 20, right: 20 }}
/>
<div style={{
position: 'absolute',
bottom: '28%',
width: '100%',
textAlign: 'center',
}}>
<div style={{ fontSize: 32, fontWeight: 700 }}>{value}%</div>
<div style={{ fontSize: 14, color: '#6b7280' }}>CPU使用率</div>
</div>
</div>
);
}🤖 AIプロンプトテンプレート
React + Tailwind CSSで、Nivoを使ったゲージチャートを実装してください。 - 使用ライブラリ: @nivo/pie の ResponsivePie - startAngle: -90、endAngle: 90 で半円形に表示 - innerRadius: 0.7 でドーナツ型にしてゲージ風に見せる - 値(72%)と残り(28%)の2スライスで構成 - 中央に値をabsolute配置のdivで表示 - arcLabels・arcLinkLabels は非表示
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。
ライブラリ比較
| ライブラリ | ゲージ対応 | カスタマイズ性 | 学習コスト | おすすめ用途 |
|---|---|---|---|---|
| Apache ECharts | ネイティブ(gauge) | 非常に高い | 中 | 多機能ダッシュボード・複数ゲージ |
| Plotly.js | ネイティブ(indicator) | 中 | 低 | データ分析・KPIパネル |
| ApexCharts | ネイティブ(radialBar) | 高 | 低 | ビジネスダッシュボード・進捗表示 |
| Nivo | @nivo/pie で擬似実装 | 高 | 中 | デザイン重視のダッシュボード |
選択のポイント
- •Apache ECharts: 複数ゲージの並列表示、グラデーション、アニメーションなど高度なカスタマイズが必要な場合に最適。JSONベースの設定で直感的に記述できる。
- •Plotly.js:
indicatorタイプでゲージ+数値をシンプルに組み合わせたい場合。カラーゾーンや警告ラインの設定も容易でKPIパネルとの相性がよい。 - •ApexCharts:
radialBarで円弧型ゲージを最小限のコードで実装できる。複数指標を同一チャートに並べることも容易で、ビジネスダッシュボードに最適。 - •Nivo:
@nivo/pieの半円表示でゲージを表現。専用ゲージコンポーネントはないが、Nivoの洗練されたデザインシステムで統一したい場合に有効。
ゲージチャート(Gauge Chart)は、KPIや使用率などの単一指標を半円形または円弧形で視覚的に表示するグラフ。現在値と上限・下限を直感的に把握できる。
サーバーのCPU/メモリ使用率、売上達成率、スコア表示など、単一指標の現在値と目標値の関係を示す場面で広く使われる。
- •半円形ゲージ(Semicircle)
- •フルサークルゲージ(Full Circle)
- •複数ゲージの並列表示
- •カラーゾーン付きゲージ
- •アニメーション付きゲージ