論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
円グラフ
Pie Chart
可視化

💡 30秒で分かる結論

構成比を扇形で表現

🎨 直感で掴む

グラフの目的は「データを分かりやすく伝える」こと。 軸・凡例・出典・スケールを必ず明示してください。

本ページでは 円グラフ を、 定義・前提条件・使い方・落とし穴の順に整理して解説します。 厳密な定義より、 まず何を、 いつ、 どう使うかを理解することを優先してください。

📐 定義

構成比を扇形で表現

英語名 Pie Chart

🎯 いつ・どこで使うか

📋 前提条件・適用範囲

この用語を理解・使用するときは、 次のような前提を意識してください:

⚠️ よくある落とし穴

❌ 軸の切り取り
原点を切ると差が誇張されます。
❌ 色覚多様性
赤緑の組合せは識別困難な人がいます。 ColorBrewer のセットを推奨。
❌ 面積の誤解
半径を 2 倍にすると面積は 4 倍。 視覚的に強調されすぎる。

🐍 Python での扱い

SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import numpy as np

# データ読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
print(df.shape)
print(df.dtypes)
print(df.describe())

# 「円グラフ」の文脈で扱う場合の例:
# 分野: 可視化
# 関連手法は同カテゴリの他用語を参照してください。

具体的なコードは 1変量の可視化 を参照してください。

📝 レポートでの報告

分析結果を報告するときに含めるべき情報:

✅ チェックリスト

🔎 円グラフ ── 深掘り解説

円グラフ(Pie Chart) は、 全体に対する構成比を扇形で表現するグラフ。 Edward Tufte は「ほとんどの場合、 棒グラフのほうが優れる」と批判していますが、 2〜3 項目の構成比であれば直感的です。

🔖 キーワード索引(拡張)

円グラフPie Chartmatplotlibplotlyseaborn可視化データ可視化SSDSE-B都道府県色覚多様性凡例軸ラベルタイトルアクセシビリティ

📐 適用判断式

$$ \theta_i = 2\pi \cdot \frac{x_i}{\sum_j x_j} $$

🧮 他可視化との比較

用途円グラフ適代替
2〜3 区分の構成比100%積み上げ棒
10 以上の区分×棒グラフ/ツリーマップ
時系列構成×積み上げ面積
類似値の精密比較×棒グラフ

🐍 Python 実装

 1
 2
 3
 4
 5
 6
 7
 8
# matplotlib pie : 関東 6 都県の人口構成
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
kanto = ['東京都','神奈川県','埼玉県','千葉県','茨城県','栃木県','群馬県']
sub = df[df['Prefecture'].isin(kanto)].set_index('Prefecture')['A1101']
plt.figure(figsize=(7,7))
plt.pie(sub, labels=sub.index, autopct='%1.1f%%', startangle=90)
plt.tight_layout(); plt.savefig('pie.png', dpi=150)
 1
 2
 3
 4
# plotly Express
import plotly.express as px
fig = px.pie(sub.reset_index(), values='A1101', names='Prefecture')
fig.write_html('pie.html')
# 円グラフより推奨される棒グラフ fig, ax = plt.subplots(figsize=(7,5)) sub.sort_values().plot.barh(ax=ax, color='#00897B') ax.set_xlabel('総人口'); plt.tight_layout(); plt.savefig('bar.png', dpi=150)
# ドーナツチャート(中央余白) plt.figure(figsize=(7,7)) plt.pie(sub, labels=sub.index, wedgeprops=dict(width=0.4)) plt.tight_layout(); plt.savefig('donut.png', dpi=150)

⚠️ 落とし穴(円グラフ固有)

❌ 軸の範囲を恣意的に切る
「ゼロ起点でない棒グラフ」のような誤誘導につながります。 必ず範囲を明示。
❌ 色を増やしすぎる
5 色を超えると識別が困難になります。 グループ化やパターンを併用。
❌ 凡例・タイトル不足
情報の出典・期間・単位を必ず記載。
❌ 印刷・モノクロでの崩壊
デジタル前提のカラーパレットが印刷で識別不能になることがあります。

🔗 関連用語(拡張)

[並列]散布図 [並列]ヒストグラム [並列]ヒートマップ [並列]棒グラフ [並列]折れ線グラフ [並列]円グラフ [並列]レーダーチャート [並列]地理可視化 [並列]ネットワーク可視化 [発展]インタラクティブ可視化 [応用]相関係数 [応用]高齢化率 [発展]特徴量設計 [応用]標準化 [応用]正規性

📚 補足資料 — FAQ/追加コード/背景

FAQハンズオンSSDSE-BPython事例研究データ駆動教育

❓ よくある質問 (FAQ)

円グラフはいつ使うのが最適?
2〜3 区分の単純な構成比のみ。 多区分や精密比較なら棒グラフ/ツリーマップ。
色の選び方は?
色覚多様性を考え viridis、 cividis、 ColorBrewer の colorblind-safe スキームを推奨。
matplotlib と Plotly どちらで描く?
静的論文は matplotlib、 探索/ダッシュボードは Plotly。 同じデータで両方残すと再利用可。
軸ラベル・凡例の必須情報は?
単位・出典・期間・サンプル数を必ず付ける。
印刷時のサイズは?
図の高さ・幅は 6×4 inch 程度を基本に。 dpi=150 以上で印刷品質。

🧪 SSDSE-B-2026 を使った追加計算例

用途円グラフ注意点代替候補
2-3 区分の比ラベル順守100%積上げ棒
10+ 区分×識別困難ツリーマップ
時系列構成×推移見えず面積/積上げ棒
精密比較×角度精度低棒グラフ
注目強調切離し可棒+注釈

🐍 さらにコードを書く

人口構成円グラフ

 1
 2
 3
 4
 5
 6
 7
 8
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
tokyo = df[df['Prefecture']=='東京都'].iloc[0]
total = tokyo['A1101']
old   = tokyo['A1301']
rest  = total - old
plt.pie([old, rest], labels=['65歳以上','64歳以下'], autopct='%1.1f%%')
plt.savefig('tokyo_pie.png', dpi=150)

ドーナツ + 中央テキスト

 1
 2
 3
 4
 5
 6
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
vals = [29.1, 70.9]
ax.pie(vals, labels=['老年','その他'], wedgeprops=dict(width=0.4))
ax.text(0,0,'29.1%',ha='center',va='center',fontsize=24)
plt.savefig('donut.png', dpi=150)

棒グラフによる代替

 1
 2
 3
 4
plt.figure(figsize=(6,2))
plt.barh([0],[29.1],color='#00897B')
plt.barh([0],[70.9],left=[29.1],color='#B2DFDB')
plt.yticks([]); plt.xlim(0,100); plt.savefig('stack_bar.png', dpi=150)

💡 実務的アドバイス

🕰 歴史的背景・発展経緯

円グラフ は古典的可視化手法の一つで、 統計可視化の標準教科書 (Tufte, Cleveland) でも扱われます。

matplotlib (2003-) は MATLAB ライクな API で広く普及。 ggplot2 (R, 2007) で文法 of graphics が確立。 Vega-Lite / Altair (2017) が宣言型表現を Web に持ち込みました。

近年は SVG/Canvas/WebGL の多層実装が普及し、 大規模データでもブラウザ可視化が可能に。 GPU 利用の Datashader, deck.gl が研究機関で活躍。