円グラフか積み上げ棒か、AIに相談する前に内訳の見せ方を整理する
AIを使いこなすClaudeで執筆し、GPTで自動校閲・修正しています。

結論から言うと、1時点の内訳を、項目が少ない状態で見せるなら円グラフ(または1本の帯)、複数の時点やグループで内訳を比べるなら100%積み上げ棒が基本です。項目間の大小を正確に比べたいだけなら、どちらでもなく横棒グラフのほうが向いています。 AIに「どのグラフがいいですか」と聞くと、それらしい答えは返ってきます。ただ、何を比べたいのか、項目はいくつか、合計は揃っているのかを渡さなければ、答えは一般論になります。この記事では、先に自分で整理する観点を選択表にし、架空データで円グラフと積み上げ棒の見え方を比べ、そのままAIに渡せる依頼文までを用意しました。
まず決めるのは「何を比べるか」と「項目数」
内訳のグラフ選びで迷う原因の多くは、次の2点が曖昧なことです。
- 比較対象:1時点の内訳を見たいのか、時点やグループ間で内訳を比べたいのか
- 項目数:内訳の区分がいくつあるか(「その他」を含む)
総務省統計局の教材によると、円グラフは全体を100%として項目の構成比を扇形で表し、帯グラフも同じく構成比を表すものです。帯グラフは複数を並べることで構成比の変化を捉えられ、Excelの「100%積み上げ横棒」で作れる積み上げ棒の一種だと説明されています(円グラフ、帯グラフ)。つまり「円か積み上げ棒か」は、同じ構成比を別の形で見せる選択で、決め手は比較の仕方になります。
項目数と比較対象で選ぶ表
次の表は、公式教材の考え方を踏まえた編集上の目安です。絶対的な決まりではありません。
- 1時点の内訳、全体に対する割合を伝える、項目数:2〜5、向く形:円グラフ、または1本の帯、注意点:大きい順に並べ、「その他」は最後
- 1時点の内訳、項目ごとの大小も比べたい、項目数:6以上、向く形:横棒グラフ(降順)、注意点:円にすると小さな扇形の差が読めない
- 2〜数時点(グループ)で構成比がどう変わったか、項目数:3〜6、向く形:100%積み上げ棒(帯グラフ)、注意点:項目の順序と色を全ての棒で固定
- 時点ごとに合計が違い、件数の増減も見せたい、項目数:3〜5、向く形:実数の積み上げ棒、または実数と100%を別図で並べる、注意点:100%だけだと総数の変化が消える
- 特定の1項目の推移を正確に見たい、項目数:問わない、向く形:折れ線または横並びの棒、注意点:積み上げの途中の区分は基準線が動き、比べにくい
- 複数回答で合計が100%を超える、項目数:問わない、向く形:横棒グラフ、注意点:円グラフは不適切(統計局の円グラフ解説でも注意されています)
円グラフには「合計が100%になっていること」が前提です。選択式の複数回答や、割合の重複するデータは、そもそも内訳の図に向きません。
架空データで比べる(説明用の例)
以下は説明用の架空データです。ある社内ヘルプデスクの問い合わせ件数を、前期と今期で比べたと仮定します。実在の組織の数字ではありません。
- ログイン、前期(件):120、今期(件):90、前期の割合:40.0%、今期の割合:28.1%
- 経費精算、前期(件):80、今期(件):130、前期の割合:26.7%、今期の割合:40.6%
- 備品、前期(件):50、今期(件):45、前期の割合:16.7%、今期の割合:14.1%
- ネットワーク、前期(件):30、今期(件):35、前期の割合:10.0%、今期の割合:10.9%
- その他、前期(件):20、今期(件):20、前期の割合:6.7%、今期の割合:6.3%
- 合計、前期(件):300、今期(件):320、前期の割合:100%、今期の割合:100%
割合は小数第2位を四捨五入しており、表示上の合計が100.0%にならない列があります。図に注記するときは「四捨五入のため合計は100%にならない場合がある」と書いておくと誤解を防げます。
円グラフを2つ並べた場合
前期と今期の円を並べると、「ログインが減り、経費精算が増えた」という大きな動きは分かります。一方で、備品の16.7%→14.1%やネットワークの10.0%→10.9%のような小さな差は、扇形の角度や面積から読み取りにくくなります。2つの円を目で往復する負担もあります。
100%積み上げ棒にした場合
前期と今期の2本の棒を、同じ順序・同じ色で並べると、両端に接する区分は基準線が揃うため、ログインの縮小や「その他」の変化を比べやすくなります。経費精算のように中ほどにある区分は、両端のような共通の基準線がなく、差の読み取りは難しくなります。構成比の変化を見るには役立ちますが、境界線だけで中ほどの区分の増減を正確に読み取れるとは限りません。
ただし100%にそろえると、総数が300件から320件に増えたことは見えません。件数の変化も伝えたいなら、実数の積み上げ棒も並べるか、棒の横に合計を書き添えます。
比較用のコード例
pandasのDataFrame.plot.barには積み上げ用のサンプルとしてstacked=Trueが示されており、DataFrame.plot.pieはyで列を指定して円グラフを描きます(plot.bar、plot.pie)。次のコードはそれを使った下書きです。この記事の作成時には実行しておらず、日本語フォントの設定や引数は手元の環境で確認してください。
import pandas as pd
import matplotlib.pyplot as plt
# 説明用の架空データ(件数)
df = pd.DataFrame(
{"前期": [120, 80, 50, 30, 20], "今期": [90, 130, 45, 35, 20]},
index=["ログイン", "経費精算", "備品", "ネットワーク", "その他"],
)
share = (df / df.sum() * 100).round(1)
print(share)
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
# A: 円グラフ(今期のみ)
df["今期"].plot.pie(ax=axes[0], startangle=90, counterclock=False,
autopct="%.1f%%", ylabel="", title="A 円(今期)")
# B: 100%積み上げ横棒(区分の順序を固定)
share.T.plot.barh(stacked=True, ax=axes[1], xlim=(0, 100),
title="B 100%積み上げ")
# C: 件数の積み上げ横棒
df.T.plot.barh(stacked=True, ax=axes[2], title="C 件数の積み上げ")
plt.tight_layout()
plt.show()AIに渡す依頼文
グラフの種類だけを聞くのではなく、データの形と目的を渡すと、相談の質が上がります。次の文面の【】を埋めて使ってください。
次のデータの「内訳」を見せるグラフを選びたいです。
【目的】前期と今期で、問い合わせ区分の構成比がどう変わったかを会議で説明したい
【読み手】データに詳しくない管理職
【項目数】5区分(「その他」を含む)
【比較対象】2時点(前期・今期)
【合計】前期300、今期320(合計が違う)
【データ】(区分、前期、今期の表をここに貼る)
お願い:
1. 円グラフ、100%積み上げ棒、実数の積み上げ棒、横棒のうち、
向くものと向かないものを理由つきで教えてください。
2. 選んだグラフで、区分の並べ順と「その他」の扱いを提案してください。
3. 読み手が誤読しやすい点を3つ挙げてください。
4. 推奨グラフを描くPythonコード(pandas・matplotlib)を書いてください。社内の実データを貼る場合は、顧客名や個人を特定できる項目を外し、区分名を「区分A」のように置き換えてください。AIサービスの学習利用の設定は、情報の秘密を守ることとは別の話です。扱ってよい情報かどうかは、自社の規程で先に確認します。
人が確認すること
AIの提案は、次の点を人の目で確かめてから採用します。
- 合計:各構成比が合計100%(端数処理を除く)になっているか。複数回答のデータを円グラフにしていないか。
- 並べ順:統計局の解説では、円グラフは12時の位置から時計回りに大きい順、「その他」は割合が大きくても最後とされています。帯グラフも同様です。時点を比べる帯では、項目の順序を全ての帯で揃えます。
- 「その他」の大きさ:その他が最大になっていたら、内訳が粗すぎます。中身を分けるか、別の図で補足してください。
- ラベル:構成比を伝える図では、数値を直接書くほうが読み間違いが減ります。凡例と図を往復させない配置を試してください。
- 色:同じ区分は全ての図で同じ色にします。
- 主張と図の一致:「経費精算が最も増えた」と書くなら、増減は割合の差なのか件数の差なのかを明記します。割合は上がっても件数は変わらない場合があります。
AIが作った図を見て「きれいだから」と採用せず、手元の表の数字と図の数字を数か所照らし合わせることが、いちばん確実な検算になります。

