グラフの目的は「データを分かりやすく伝える」こと。 軸・凡例・出典・スケールを必ず明示してください。
本ページでは 円グラフ を、 定義・前提条件・使い方・落とし穴の順に整理して解説します。 厳密な定義より、 まず何を、 いつ、 どう使うかを理解することを優先してください。
構成比を扇形で表現
英語名 Pie Chart。
この用語を理解・使用するときは、 次のような前提を意識してください:
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 項目の構成比であれば直感的です。
| 用途 | 円グラフ適 | 代替 |
|---|---|---|
| 2〜3 区分の構成比 | ○ | 100%積み上げ棒 |
| 10 以上の区分 | × | 棒グラフ/ツリーマップ |
| 時系列構成 | × | 積み上げ面積 |
| 類似値の精密比較 | × | 棒グラフ |
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') |
| 用途 | 円グラフ | 注意点 | 代替候補 |
|---|---|---|---|
| 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 が研究機関で活躍。