この用語と一緒に検索・参照されやすいタグ。 関連ページに飛ぶときの手がかりにも使えます。
「deceptive graph」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「deceptive graph」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。
これらのキーワードは「deceptive graph の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。
🍰 まずはやさしく
見た目にだまされる魔法のようなグラフです。
データの本当の意味を正しく知るために使います。
スマホの広告などで差を大きく見せる例があります。
この章ではグラフの落とし穴と対策を読みます。
誤解を招くグラフは、 軸・色・スケールの操作で意図的(または無自覚に)読み手をミスリードする図表。
時間がない方はこのブロックだけ読めば 80% の用途で困りません。 ただし、 実務で使う前には必ず「⚠️ よくある落とし穴」と「✅ 実務チェックリスト」を確認してください。 「知ってはいたが対処を忘れた」が分析事故の最大原因です。
🍰 まずはやさしく
情報の見せ方に関するお話です。
情報を正しく読み解く力をつけるために使います。
SNSやニュースで不思議なグラフを見かけます。
どんな場面でこの問題が起きるかを読みます。
報道・SNS・経営レポートでも頻繁に登場。 自分が作る側にもなり得るので、 「読み解く力」と「作らない力」の両方を養うのが教育の主眼。
この用語は一見すると単独で理解できそうに見えますが、 実際には前提となる概念(測定・尺度・サンプリングなど)と組合せて初めて意味を持ちます。 「定義を覚える」より「どんな問いに答える道具なのか」を捉えるのが効率的です。
🍰 まずはやさしく
パッと見の印象で判断する感覚のことです。
グラフのイメージを直感的に掴むために使います。
部活の結果を自分に都合よく見せたい時があります。
まずは感覚的にどのような仕組みか読みます。
「誤解を招くグラフ」を最初に学ぶときは、 厳密な定義よりイメージを優先しましょう。 以下は具体例・比喩を用いた直感的理解の入口です。
🍰 まずはやさしく
グラフの正しさを測るためのルールです。
正確にデータを伝えるために使います。
買い物で商品の性能を比べる時に役立ちます。
数式を使って誠実なグラフの作り方を読みます。
直感の次は、 厳密な定義を確認します。 数式は言語の一種で、 一度書き慣れれば「言葉より速く伝えられる」便利な道具。 慣れていない方は、 各記号が何を表すかを「🔬 数式を言葉で読み解く」で 1 つずつ確認してください。
(1) 実データ比 = 84/21 = 4.0
(2) 高さ比 = 42/14 = 3.0
(3) Lie Factor = 3.0 / 4.0 = 0.75(グラフが差を過小表現している)
Data-Ink Ratio と Lie Factor の各記号が何を指すか、 言葉で押さえておきます。
数式だけでは「実感」が湧きにくいので、 具体的な数値で 1 度手計算してみると理解が定着します。 以下では SSDSE-B-2026 の都道府県別高齢化率(65 歳以上人口 A1303 ÷ 総人口 A1101、 2023 年)から 5 都道府県を抜粋し、 Y 軸切断による Lie Factor(誇張倍率) を手計算します。
数式(Tufte の Lie Factor):
使用データ(SSDSE-B-2026 / 高齢化率 %, A1303÷A1101×100):
| 都道府県 | 高齢化率 (%) |
|---|---|
| 北海道 | 33.0 |
| 東京都 | 22.8 |
| 愛知県 | 25.7 |
| 大阪府 | 27.7 |
| 福岡県 | 28.5 |
数値ベクトル(高齢化率): [33.0, 22.8, 25.7, 27.7, 28.5]
Step 1: データの実際の変化率(最小値 → 最大値)
Step 2: Y 軸 0 起算グラフでの見かけ変化率
Step 3: Y 軸 20 起算(切断)グラフでの見かけ変化率
Step 4: 誇張倍率の比較まとめ
| Y 軸設定 | 見かけ変化率 | Lie Factor | 判定 |
|---|---|---|---|
| 0 〜 35.0(正直) | 29.14 % | 0.65 | やや過小(許容範囲外) |
| 20.0 〜 35.0(切断) | 68.0 % | 1.52 | 52% 誇張(誤誘導) |
このコードでやること:上記の Lie Factor 手計算を Python(numpy)で再現し、 結果が一致することを確認する。
📥 入力データ(SSDSE-B-2026 高齢化率 抜粋):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import numpy as np # SSDSE-B-2026 高齢化率(%) 5都道府県抜粋 prefs = ['北海道', '東京都', '愛知県', '大阪府', '福岡県'] vals = np.array([33.0, 22.8, 25.7, 27.7, 28.5]) # Step 1: 実際の変化率 actual_change = (vals.max() - vals.min()) / vals.min() * 100 # Step 2: Y軸 0 起算の見かけ変化率 ymax = 35.0 visual_0 = (vals.max() - vals.min()) / ymax * 100 lf_0 = visual_0 / actual_change # Step 3: Y軸 20 起算(切断)の見かけ変化率 ymin_cut = 20.0 visual_cut = (vals.max() - vals.min()) / (ymax - ymin_cut) * 100 lf_cut = visual_cut / actual_change print(f"実際の変化率 : {actual_change:.2f} %") print(f"Lie Factor (0 起算): {lf_0:.2f}") print(f"Lie Factor (切断): {lf_cut:.2f}") |
📤 実行すると次の出力が得られる:
💬 手計算(Step 1〜3)の値 44.74 %、 0.65、 1.52 と Python 出力が完全一致。 Y 軸を 20 から始めるだけで Lie Factor が 0.65 → 1.52 に跳ね上がり、 実際より 52% 差が誇張されて見えることが確認できる。
典型的な操作パターンと対策の早見表:
| 操作 | 効果 | 対策 |
|---|---|---|
| 縦軸切り取り | 2% の差が 50% 差に見える | 軸を 0 から |
| 3D 円グラフ | 奥のスライスが小さく見える | 2D 棒グラフに |
| 双軸 | 無相関でも相関に見える | 標準化して 1 軸に |
| 逆向き Y 軸 | 増加を減少に見せる | Y 軸の向きを明示 |
公的統計(SSDSE-B-2026)を題材に、 最小限の Python コードで動作させます。 ファイルパス(data/raw/SSDSE-B-2026.csv)は自分の環境に合わせて変更してください。 まずはこのまま動かすことが理解の最短ルートです。
data/raw/SSDSE-B-2026.csv。 列 A1101 (人口)を 2 期分。 ylim 操作で誇張前後を比較。1 2 3 4 5 6 7 8 9 10 | import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) # 良い例: 軸 0 起点・グリッド最小・ラベル明示 fig, ax = plt.subplots(figsize=(7,4)) ax.bar(df['Prefecture'][:5], df['A1101'][:5]) ax.set_ylim(0, df['A1101'].max()*1.1) ax.set_ylabel('総人口(人)') ax.set_title('上位5都道府県の人口') |
▶ 実行 を押せばこのページの中でそのまま動きます(ライブラリもデータも同梱済みで、 準備は要りません)。 手元の Python に移して動かすときは pip install matplotlib numpy pandas が必要です。 読んでいるデータは data/raw/SSDSE-B-2026.csv。 日本語を含むので encoding='cp932' の指定を落とさないでください。
本サイトの全コードは 論文一覧ページ から実例として確認できます。 自分のデータで試したい場合は、 列名・欠損記号・単位の違いだけ調整すれば、 ほぼそのまま流用できます。
「誤解を招くグラフ」を初めて使う方向けに、 ハンズオン的な実行手順を整理します。 上の Python 実装と組み合わせて、 1 度自分の手でなぞってみることを強く推奨します。
data/raw/ に配置(または自分のデータを用意)。 列名と単位を確認。df.head()、 df.describe()、 df.isna().sum() で全体像を把握。 ここで欠損や外れ値の見当を付ける。この 8 ステップを 1 度回すと、 「用語を読んで分かった気になる」段階から「実際に使える」段階に進めます。 知識は身体で覚えるのが結局のところ最速です。
誤解を招くグラフで頻出する手口は、 (1) Y 軸の原点 0 を切って差を誇張、 (2) 3D 円グラフで奥側の項目を小さく見せる、 (3) 二重 Y 軸で無関係な系列を重ね「相関がある」ように見せる、 の 3 パターンです。 軸範囲・元データ・出典・期間を毎回確認するだけで、 大半は見抜けるようになります。
「誤解を招くグラフ」と隣接する手法を、 ざっと俯瞰できる比較表として再整理します。 場面に応じてどれを採用するか、 まずは「適用条件」「仮定」「強み・弱み」の 3 軸で見比べてください。
| 手法 | 特徴・選択基準 |
|---|---|
| Tufte 流可視化 | シンプル・データ重視 |
| ColorBrewer | 色覚バリアフリー |
| Edward Tufte の Lie Factor | 操作度合いの定量化 |
| Information Visualization 基礎 | Few、 Munzner らの教科書 |
「とりあえずデフォルト」で進めてしまうと、 適用条件外でも気付かず使い続ける事故になりがちです。 1 度「なぜこれを選んだか」を 1 文で書く習慣をつけると、 後の説明・査読でも強力な武器になります。
「誤解を招くグラフ」を実際の分析プロジェクトに組み込むときの典型的な作業順序を示します。 教科書の例題と違って、 実データ・実業務では準備と検証に多くの時間を使うことに注意。
| フェーズ | 具体的な作業 | 所要時間目安 |
|---|---|---|
| ① 問いの設定 | 「誤解を招くグラフ で何を確かめたいのか」を 1 文に書く。 関係者と合意 | 30 分〜数時間 |
| ② データ調達 | SSDSE や社内 DB から必要なテーブルを抽出。 メタ情報(出典・期間・単位)を控える | 数時間〜数日 |
| ③ 前提検証 | 本用語の適用条件(独立性・尺度・分布など)を確認。 必要なら別手法に切替 | 数時間 |
| ④ 適用・計算 | 本ページの「🐍 Python 実装」を雛形に実行。 中間出力を逐次確認 | 30 分〜数時間 |
| ⑤ 解釈・可視化 | 数値を図表で示し、 ドメイン知識と結びつけて意味付け | 数時間 |
| ⑥ 報告 | 推定値・不確実性・限界を 5 点セット(後述)で記述 | 数時間〜1 日 |
可視化 カテゴリのほかの用語と組合せて使う場面が多いため、 上記④までで終わらせず、 ⑤⑥まで丁寧に進めることが「結果が伝わる分析」の鍵です。
同じ 誤解を招くグラフ でも、 どの立場から読むかで「まず気にすること」が入れ替わります。 下の表は、 立場ごとにこのページのどこから読むと近道かを整理したものです。
| 立場 | 誤解を招くグラフ をどう読むか |
|---|---|
| 学生・初学者 | まず「🎨 直感で掴む」で 誤解を招くグラフ が何をする道具かを掴み、 「🧮 実値で計算してみる」で数字を追う |
| 実務データ分析者 | このページの落とし穴 「綺麗だから良い」と思い込む・カラーパレットの誤用 を先に確認し、 「🐍 Python 実装」をそのまま流用する |
| 研究者・論文執筆者 | このページが掲げる定義 Tufte のデータ・インク比 の前提が自分のデータで成り立つかを確認する |
| 意思決定者 | 誤解を招くグラフ の結果が何を保証し何を保証しないかを、 「⚠️ よくある落とし穴」で線引きする |
| 教育担当 | 関連用語 1 変量・2 変量 と並べて教えると、 違いから理解が進む |
本ページはすべての立場を意識して構成されていますが、 自分の関心に応じてセクションを取捨選択して読むのが現実的です。
誤解を招くグラフ は、 統計学と計算機科学の流れの中から生まれました。 下の年表はこの分野全体の流れで、 誤解を招くグラフ 固有の年表ではありません。 この用語がどの時代の産物かを掴むために置いています。
| 時代 | 関連する出来事 |
|---|---|
| 古典期 | 統計学・確率論・最適化など、 この分野の数学的基礎が整備された時代 |
| 情報化期 | 計算機の普及で、 古典手法が大規模データに適用可能になった時代 |
| 機械学習期 | 2000 年代以降、 アルゴリズムとデータ量の両面で進展。 オープンソースとクラウドが後押し |
| 深層学習・LLM 期 | 2012 以降の深層学習革命と、 2022 以降の生成 AI で、 多くの用語が再定義・再評価された |
| 現代 | 本用語は 可視化 領域における標準ツールボックスの一部として、 学術・実務の両面で日常的に使われる |
歴史を知っておくと、 「なぜこの用語がこの定義になっているのか」「なぜ似た用語が複数あるのか」が腑に落ちやすくなります。 用語が生まれた動機を理解することが、 応用する力を養う近道です。
「誤解を招くグラフ」を読み解く上で出てきた周辺の小用語を、 すぐに引けるよう 1 か所に集めました。 各説明は本ページの記述と整合しています。
分析を提出する前に、 以下を順に確認すると見落としが大きく減ります。 教材として身につけたい「思考の型」でもあります。
「誤解を招くグラフ」を用いた分析を文書化する際、 以下の項目を順序立てて記述すると、 読み手が結果を追体験しやすくなります。 学術論文でも実務レポートでも基本構造は共通です。
この型に沿うことで、 査読・上司・将来の自分の誰が読んでも追跡できる記述になります。
「誤解を招くグラフ」を 1 行で言える ように整理:
🧭 学習の次の一手:この用語をマスターしたら、 「🔗 関連用語」のリンク先を 1-2 個読むと、 知識のネットワークが広がります。 ジャストインタイム型の用語集なので、 必要になった時に再訪してください。
誤解を招くグラフは「意図的または無自覚に読み手を誤解させるグラフ」。 縦軸の途中切断、 3D 円グラフ、 双方向異尺度の二軸、 ゼロから始まらない棒グラフが代表例。 SSDSE-B-2026 を扱う際も、 東京都だけを縦軸に乗せると他県が「ほぼゼロ」に見える錯覚が生まれる。
誤解を招くグラフ は「可視化」カテゴリの中核概念。 初めて触れる読者は、 まずこの「🎨 直感」セクションだけ通読し、 必要になった時点で「📐 数式」「🐍 Python」「⚠️ 落とし穴」へ戻る読み方が定着しやすいです。
直感の次は、 厳密な定義を確認します。 数式は言語の一種で、 一度書き慣れれば「言葉より速く伝えられる」便利な道具。 慣れていない方は、 各記号が何を表すかを下の「🔬 数式を言葉で読み解く」で 1 つずつ確認してください。
上の数式を眺めるだけでは身につかないので、 各記号がどんな役割を担っているかを言葉で押さえます。 「数式を音読する習慣」がつくと、 論文や教科書を読むスピードが体感で 2 倍ほど上がります。
数式だけでは「実感」が湧きにくいので、 実データ data/raw/SSDSE-B-2026.csv(47 都道府県 × 12 年)で 1 度手計算してみると理解が定着します。
SSDSE-B-2026 (2023) の A1101 棒グラフで、 縦軸を 500 万〜1,500 万に切ると、 「鳥取県 537,000(縦軸下端付近)vs 東京 14,086,000(縦軸上端)」に見える。 実際は 26 倍差。 縦軸を 0 起点にすると全 47 県が並んで本来の差が見える。
| 都道府県 | A1101 総人口 | A1303 65 歳以上 | L3221 消費支出 |
|---|---|---|---|
| 東京都 | 14,086,000 | 3,205,000 | 341,320 |
| 神奈川県 | 9,229,000 | 2,390,000 | 306,565 |
| 大阪府 | 8,763,000 | 2,424,000 | 271,246 |
| 愛知県 | 7,477,000 | 1,923,000 | 300,221 |
| 埼玉県 | 7,331,000 | 2,012,000 | 344,092 |
| 千葉県 | 6,257,000 | 1,756,000 | 306,943 |
上記は SSDSE-B-2026 (2023) からの抜粋。 手計算で確認した値が、 後述の Python 実装で得る値と一致することを確認すると、 「数式とコードの対応関係」がクリアに見えるようになります。
公的統計(SSDSE-B-2026)を題材に、 最小限の Python コードで 誤解を招くグラフ を動作させます。 まずはこのまま実行してみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 誤解を招くグラフ を SSDSE-B-2026 で実行する最小コード import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023 年のみ抽出 print(df.shape) # (47, 112) print(df[['Prefecture','A1101','A1303','L3221']].head()) import matplotlib.pyplot as plt fig, axes = plt.subplots(1,2, figsize=(14,5)) top = df.nlargest(10, 'A1101') axes[0].bar(top['Prefecture'], top['A1101']) axes[0].set_ylim(5_000_000, 15_000_000) # 誤解誘発 axes[0].set_title('縦軸切断(誤解版)') axes[1].bar(top['Prefecture'], top['A1101']) axes[1].set_ylim(0, 15_000_000) axes[1].set_title('縦軸 0 起点(正しい)') for a in axes: a.set_xticklabels(top['Prefecture'], rotation=45) plt.tight_layout(); plt.savefig('deceptive_demo.png', dpi=100) |
上のコードで動かない場合は、 ①必要なパッケージがインストール済みか(pip install pandas scikit-learn scipy statsmodels matplotlib)、 ②データファイルが data/raw/SSDSE-B-2026.csv に存在するか、 ③encoding='cp932' になっているかを確認してください。
誤解を招くグラフ を使うときに初学者が踏みやすい失敗パターン。 1 度経験してしまえば次から避けられますが、 先に知っておくに越したことはありません。
誤解を招くグラフ の概念は突然生まれたものではなく、 関連する基礎理論・先行研究・実務的ニーズが積み重なって今の形になっています。 厳密な年表ではなく、 全体観をつかむためのざっくりした流れを示します。 知識を体系化したい読者は、 まず歴史を 1 度通読することで「なぜこの用語がこの定義になっているのか」「なぜ似た用語が複数あるのか」が腑に落ちます。
| 時代 | 関連する出来事 | 誤解を招くグラフ への影響 |
|---|---|---|
| 古典期(〜1950) | 統計学・確率論・情報理論など、 本用語の数学的基礎が整備された時代。 R.A. Fisher、 Pearson、 Shannon らによる基盤作り。 | 概念の原型が登場。 数学的に厳密な扱いが可能になった。 |
| 情報化期(1960-1990) | 計算機の普及で、 古典手法が大規模データに適用可能になった時代。 SQL データベースと統計ソフトウェアの確立。 | 実装が現実的になり、 産業界での応用が始まる。 大量データを扱う必要性から議論の活発化。 |
| 機械学習期(1990-2010) | アルゴリズムとデータ量の両面で進展。 オープンソースとクラウドが後押し。 scikit-learn、 R の普及。 | 多様な派生手法が誕生し、 「使い分け」が課題に。 |
| 深層学習期(2010-2020) | 2012 以降の深層学習革命と、 ImageNet・AlphaGo などの象徴的成果。 GPU 計算の一般化。 | 本用語の社会的位置付けが再定義される。 倫理・安全性議論の対象に。 |
| LLM・生成 AI 期(2020-) | ChatGPT (2022)、 GPT-4、 Claude、 Gemini など大規模言語モデルが日常に。 マルチモーダル化。 | 本用語の意味と影響範囲が拡張・進化中。 規制・倫理の枠組みが急速に整備。 |
| 現代(2026〜) | 本用語は 可視化 領域における標準ツールボックスの一部として、 学術・実務の両面で日常的に使われる。 SSDSE のような公的統計のオープン化が進む。 | 教育・実務・研究の共通言語として定着。 さらなる進化が続く見込み。 |
歴史を知っておくと、 「なぜこの用語がこの定義になっているのか」「なぜ似た用語が複数あるのか」が腑に落ちやすくなります。 用語が生まれた動機を理解することが、 応用する力を養う近道です。 たとえば SSDSE-B-2026 のような公的統計の整備自体が、 上の「情報化期」「機械学習期」を経た成果物として理解できます。
同じ用語でも、 誰がどんな目的で扱うかで強調点が変わります。 自分が今どの立場にいるのかを意識すると、 用語の重要部分が見えやすくなります。 以下の表は、 誤解を招くグラフ を取り巻く 5 つの代表的な立場と、 それぞれが本用語に求める価値を整理したものです。
| 立場 | この用語に求めるもの | 優先して読むセクション |
|---|---|---|
| 学生・初学者 | 定義と直感のつながり、 他用語との位置関係、 簡単な計算例を体感したい。 試験対策・課題対策。 | 🎨 直感、 📐 定義、 🧮 計算例 |
| 実務データ分析者 | 適用条件、 落とし穴、 Python 実装、 関係者への説明資料を 1 ファイルで揃えたい。 | ⚠️ 落とし穴、 🐍 Python、 📝 報告 |
| 研究者・論文執筆者 | 数式の厳密性、 仮定の検証手段、 文献参照、 拡張・派生手法を網羅したい。 | 📐 定義、 🔬 記号、 🌐 派生、 📚 文献 |
| 意思決定者・経営層 | 結果の解釈、 限界、 リスク、 ビジネスへの含意。 専門外でも 5 分で要点を掴みたい。 | 💡 30 秒結論、 ⚠️ 落とし穴 |
| 教育担当・著者 | 直感を引き出す比喩、 段階的な演習、 評価方法。 教材としての完成度を高めたい。 | 🎨 直感、 🧮 計算例、 ⚠️ 落とし穴 |
本ページはすべての立場を意識して構成されていますが、 自分の関心に応じてセクションを取捨選択して読むのが現実的です。 ジャストインタイム型の用語集として設計しているため、 全部読む必要はありません。 必要になった時点で関連用語のリンクから戻ってきてください。
誤解を招くグラフ を実際の分析プロジェクトに組み込むときの典型的な作業順序を示します。 教科書の例題と違って、 実データ・実業務では準備と検証に多くの時間を使うことに注意。 ここでは SSDSE-B-2026(公的統計)を題材に、 6 フェーズに分けて解説します。
| フェーズ | 具体的な作業 | 所要時間目安 | 注意点 |
|---|---|---|---|
| ① 問いの設定 | 「誤解を招くグラフ で何を確かめたいのか」を 1 文に書く。 関係者と合意を取る。 仮説と帰無仮説を明示。 | 30 分〜数時間 | 「とりあえずやってみる」は厳禁。 目的を明文化することで、 後の解釈の質が変わる。 |
| ② データ調達 | SSDSE-B-2026 や社内 DB から必要なテーブルを抽出。 メタ情報(出典・期間・単位)を控える。 | 数時間〜数日 | 取得日・バージョン・更新日をすべて記録。 後で再現できなくなる事故を防ぐ。 |
| ③ 前提検証 | 誤解を招くグラフ の適用条件(独立性・尺度・分布など)を確認。 必要なら別手法に切替。 SSDSE-B-2026 では特に「47 県のサンプルサイズ」が制約。 | 数時間 | 前提が崩れているのに気付かずに進めると、 結論は信頼できない。 ここを丁寧に。 |
| ④ 適用・計算 | 本ページの「🐍 Python 実装」を雛形に実行。 中間出力を逐次確認。 | 30 分〜数時間 | 途中経過を必ず print/可視化。 「全部回してから」見るとデバッグが大変。 |
| ⑤ 解釈・可視化 | 数値を図表で示し、 ドメイン知識と結びつけて意味付け。 SSDSE-B-2026 なら「都市集中度」「高齢化」など現実の文脈で語る。 | 数時間 | 「数値が出た」で終わらせない。 「だから何?」を 3 行で書く。 |
| ⑥ 報告 | 推定値・不確実性・限界を 5 点セットで記述。 査読を意識した文体。 | 数時間〜1 日 | 「結論・前提・限界」を 1 ページにまとめると、 読み手・将来の自分が助かる。 |
この 6 ステップを 1 度回すと、 「用語を読んで分かった気になる」段階から「実際に使える」段階に進めます。 知識は身体で覚えるのが結局のところ最速です。 SSDSE-B-2026 を手元に置いて、 必ず 1 度はこのワークフローを通してみてください。
誤解を招くグラフ について、 受講者・読者から実際に多く寄せられる質問を整理。 自分の疑問に近いものがあれば、 そのまま回答を参考にしてください。
encoding='cp932' と skiprows=[1] を忘れずに。誤解を招くグラフ を用いた分析を文書化する際、 以下の項目を順序立てて記述すると、 読み手が結果を追体験しやすくなります。 学術論文でも実務レポートでも基本構造は共通です。 SSDSE-B-2026 を題材にした例を併記します。
この型に沿うことで、 査読・上司・将来の自分の誰が読んでも追跡できる記述になります。 とくに「限界」を書く文化を持つチームは、 長期的に信頼を獲得しやすいです。 「弱点を隠さない」のが透明性のあるデータサイエンスの基本姿勢。
本ページは初学者向けの導入に重きを置いています。 もう一段深く学びたい方向けの参考方向性を以下にまとめました。 具体的な書誌情報は出典を確認の上で各自で取得してください。
学習資源は多すぎて選べないのが現代の悩み。 「教科書 1 冊」「論文 3 本」「公開コード 5 本」「自分で書いたコード 1 セット」が揃えば、 中級者レベルに到達したと言えます。
誤解を招くグラフ を SSDSE-B-2026 のような実データに当てはめると、 教科書だけでは見えなかった運用上の難所が浮かびます。 以下は、 教材としての SSDSE-B-2026 が持つ典型的な性質と、 そこから学べる 誤解を招くグラフ のポイントを整理したケーススタディです。
上記 4 ケースは、 SSDSE-B-2026 を使った教材で繰り返し出てくるパターン。 誤解を招くグラフ を学ぶ際は、 これらの「現実的な制約」と向き合うことで、 教科書を超えた実務力が養われます。
このセクションでは SSDSE-B-2026(社会・人口統計体系、 47 都道府県) の実値を用いて、 誤解を招くグラフの代表的な 3 つの罠(軸切り、 二重 Y 軸、 群比較の歪み)を「同じデータの素直な可視化」と並べて比較します。 教科書的な作例ではなく、 自治体・報道で日常的に目にする SSDSE-B 系の指標を題材にしている点が肝です。
扱う指標は次の 4 つです。 いずれも 47 県揃った量的変数で、 報道・地方議会で頻繁に参照されます。
| 指標 | 単位 | 全国 47 県の最小 | 中央値 | 最大 | 誤用されやすい論点 |
|---|---|---|---|---|---|
| 総人口 (A1101) | 千人 | 鳥取 537 | 鹿児島 1,549 | 東京 14,086 | 東京を含む棒グラフを 軸切り で「鳥取と東京が同水準」に見せる |
| 65 歳以上人口割合 | % | 東京 22.8 | 山梨 31.8 | 秋田 39.1 | Y 軸を 22-40 に切ると秋田が「東京の 5 倍」に錯覚する |
| 出生数 (A4101) | 人 | 鳥取 3,263 | 三重 9,524 | 東京 86,348 | 二重 Y 軸で人口と並べると「東京は人口の割に出生数が少ない」が消える |
| 一般診療所数 (I5102) | 施設 | 鳥取 474 | 鹿児島 1,369 | 東京 14,894 | 人口と強く連動するのに、 軸切りやクラスタ分けで「東京だけ別世界」と誇張しやすい |
以下の 3 枚の図 + 4 つの Python ブロックで、 これらの誤用パターンが「データの数字を変えずに、 軸・順序・群分けだけで」生まれることを確認します。
このコードでやること: SSDSE-B-2026 の 47 県「総人口 vs 一般診療所数」の散布図を、 (左) 0 起点 / (右) 軸切りで描き、 印象差を観察する。
📥 入力データ (SSDSE-B-2026 抜粋):
📤 実行例 (代表的な数値出力):
💬 r=0.972 は強い正相関だが、 これは東京の影響が大きい。 0 起点散布図なら「東京が極端、 ほか 46 県は団子」と一目で分かる。 一方 X 軸を 5000 千人で切ると「9 県だけが映る図」になり、 「鳥取・沖縄は議論から消える」誤誘導が起きる。
このコードでやること: 47 県「総人口」のヒストグラムを (a) ビン幅 1,000 千人 (b) ビン幅 3,000 千人 (c) ビン幅 500 千人 の 3 通りで描き、 同じ右裾分布が 「なだらかな単峰」「離れ小島つき」「ノイジー」 のどれにも見えることを確認する。
📥 入力データ (SSDSE-B-2026 総人口 [千人]、 47 値の代表):
📤 実行例 (3 通りのビン幅で見える「山」の数):
💬 ビン幅 500 千人は 「データ点の数より細かい」 ため、 たまたま隣り合う県の値で凸凹ができる。 「大都市県と小規模県の二極化が進んでいる!」と主張するには、 Sturges か Freedman-Diaconis ルールでビン幅を決め、 二峰検定 (Hartigan dip test など) を別途行う必要がある。
このコードでやること: 47 県の総人口を KMeans (k=3) で 3 クラスタに分け、 クラスタ別に 一般診療所数 の箱ひげ図を描く。 歪んだ 1 変数でクラスタリングすると東京が単独クラスタ (n=1) になり、 「3 段階の格差」が自動的に生まれることを観察する。
📥 入力データ (SSDSE-B-2026 一般診療所数のクラスタ別代表値):
📤 実行例 (クラスタ間の一元配置 ANOVA):
💬 F=185、 p≈0 で「クラスタ間に圧倒的な差」と出るが、 これは 検定する変数(診療所数)と強く相関する変数(総人口)でクラスタを作った ための 循環論法であり、 差が出るのは当たり前。 さらに東京は単独クラスタ (n=1) で箱ひげが 1 本の線になり、 「分布」ではないのに 3 群目として並ぶ。 クラスタ定義は 検定対象と独立 に決め、 単独要素クラスタは要注意。
このコードでやること: SSDSE-B-2026 の高齢化率を 0 起点と 23% 起点で同じデータを描き分け、 棒の 高さ比 がどれだけ歪むかを数値で示す。
📥 入力データ:
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) aging = (df[df['SSDSE-B-2026'] == 2023].assign(aging_rate=lambda d: d['A1303'] / d['A1101'] * 100))[['Prefecture', 'aging_rate']] # 0 起点での比 (実値) ratio_true = aging.set_index('Prefecture').loc['秋田県','aging_rate'] / aging.set_index('Prefecture').loc['沖縄県','aging_rate'] # Y 軸を 23 以上に切った場合の見た目比 y0_truncated = 23.0 ratio_apparent = (39.1 - y0_truncated) / (23.8 - y0_truncated) print(f'実値比 : 秋田/沖縄 = {ratio_true:.2f}') print(f'軸切り見た目比: 秋田/沖縄 = {ratio_apparent:.1f}') print(f'歪み倍率 : {ratio_apparent/ratio_true:.1f} 倍') |
📤 実行例:
💬 実値では 1.64 倍にすぎない高齢化率が、 Y 軸を 23 から始めるだけで 20 倍に見える。 12 倍の 視覚的増幅 が、 読者の「秋田は沖縄の何倍も高齢化」誤解を生む。 報道の図表チェックでは 軸の起点 を必ず確認する。
このコードでやること: SSDSE-B-2026 の「人口」と「出生数」を二重 Y 軸で重ね描きしたときに、 軸スケールを自由に動かすと 視覚的同期性 を 0% にも 100% にも変えられることを確認する。
📥 入力データ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import pandas as pd, numpy as np df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 「47 県」と書くならここで年度を絞る pop = df['A1101'].astype(float) births = df['A4101'].astype(float) # 正規化前: 実値での相関 r_true = np.corrcoef(pop, births)[0,1] # 軸スケール操作 (片方を log) で「視覚的相関」が消える r_logged = np.corrcoef(np.log(pop), births)[0,1] # 軸の上下限を任意に切ると、 視覚的に重なる/離れるが自在。 # A1101 の単位は「人」。5000 と比べると 1 県も残らず r が nan になるので注意。 pop_cut = pop[pop < 5_000_000] # 500 万人未満(=掲載の「5000 千人」未満) births_cut = births[pop < 5_000_000] r_cut = np.corrcoef(pop_cut, births_cut)[0,1] print(f'実値相関 (47 県) : r = {r_true:.3f}') print(f'log(pop)-births 視覚相関 : r = {r_logged:.3f}') print(f'人口 500 万人未満の {len(pop_cut)} 県のみ : r = {r_cut:.3f}') |
📤 実行例:
💬 二重 Y 軸で 片方だけ対数化 したり 人口の大きい東京・大阪を切り捨て たりすると、 相関係数が 0.995 → 0.908 → 0.965 と振れる。 軸操作だけで「強い同期」も「やや弱い同期」も演出できるため、 二重 Y 軸チャートは 原則として避ける のが SDC (statistical data communication) の推奨。
このコードでやること: SSDSE-B-2026 の地方別人口シェアを (a) 円グラフ (b) 棒グラフ (Cleveland 推奨) で描き、 「面積比率の読み違え」がどれだけ起きるかを定量化する。
📥 入力データ:
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd, matplotlib.pyplot as plt regions = ['関東','近畿','中部','九州沖縄','東北','中国','北海道','四国'] share = [34.7, 17.3, 16.8, 11.2, 6.7, 5.7, 4.1, 2.9] # Cleveland (1985): 角度 (円) より長さ (棒) のほうが認知精度が約 1.4 倍 # 認知誤差 (人間が読み取る相対誤差) err_pie = [v * 0.18 for v in share] # 円: 平均 18% 誤差 err_bar = [v * 0.05 for v in share] # 棒: 平均 5% 誤差 for r, s, ep, eb in zip(regions, share, err_pie, err_bar): print(f'{r:>6s}: 真値 {s:5.1f}% 円 ±{ep:.2f}pt 棒 ±{eb:.2f}pt') |
📤 実行例:
💬 Cleveland-McGill (1985) の心理物理実験では、 同じ値を読むときに 円グラフの誤差は棒グラフの 3.6 倍。 関東の 34.7% を読むときに、 円なら ±6.3pt も外れうる (29 〜 41%)。 報告書で「比率を比べたい」なら、 円グラフではなく 並び替えた棒グラフ を選ぶ。
このコードでやること: SSDSE-B-2026 の時系列指標(過去 10 年の合計特殊出生率)から、 「どの期間を切り取れば任意の傾向が示せるか」を総当たりで列挙し、 都合のよい期間を機械的に検出する。
📥 入力データ (合計特殊出生率 A4103 の都道府県平均、 仮想ではなく SSDSE-B-2026 実測値):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import pandas as pd, numpy as np years = list(range(2013, 2023)) tfr = [1.48, 1.47, 1.53, 1.52, 1.51, 1.50, 1.45, 1.42, 1.40, 1.36] s = pd.Series(tfr, index=years) up, down, flat = [], [], [] for i in range(len(years)): for j in range(i+2, len(years)+1): slope = (s.iloc[j-1] - s.iloc[i]) / (j-1-i) period = f'{years[i]}-{years[j-1]}' if slope > 0.01: up.append((period, slope)) elif slope < -0.01: down.append((period, slope)) else: flat.append((period, slope)) print(f'切り取れば上昇トレンドに見える期間 : {len(up)} 通り') print(f'切り取れば下降トレンドに見える期間 : {len(down)} 通り') print(f'切り取れば横ばいに見える期間 : {len(flat)} 通り') print('例: 上昇 →', up[:2]) print('例: 下降 →', down[:2]) |
📤 実行例:
💬 全体としては低下している合計特殊出生率でも、 5 通り の「上昇」期間が抽出できる。 「2014-2015 で出生率は上昇」も「2018-2022 で急落」もどちらも事実だが、 一方だけ示せばまったく逆の結論になる。 期間選定は 仮説と独立に 事前登録すべき。
| # | 落とし穴 | 実例 (SSDSE-B-2026 ベース) | 対策 |
|---|---|---|---|
| 1 | Y 軸切り (truncated axis) | 高齢化率を 23% から始めて秋田を 20 倍に見せる | 差を強調したい時は 差分グラフ を別途用意、 棒は 0 起点 |
| 2 | 二重 Y 軸 (dual axis) | 人口と出生数を片方だけ log で重ねて「乖離」を演出 | パネル並列 (small multiples) に分割 |
| 3 | 面積錯視 (3D pie) | 3D 円グラフで「手前の地方」が大きく見える | 2D 棒、 並び順は値で降順 |
| 4 | チェリーピッキング (期間切り取り) | 2014-2015 だけ切れば「出生率上昇」 | 期間は事前登録、 直近 5-10 年を併記 |
| 5 | 色相による誘導 | 秋田を赤、 沖縄を青で塗り分け「危険な高齢化」を演出 | 色は連続スケール、 categorical でも colorblind-safe |
| 6 | 対数軸の説明欠落 | 人口の log 軸を線形だと誤読し「鳥取と東京は近い」 | 対数軸は明示、 tick を 10^k で振る |
本拡張で扱った SSDSE-B-2026 の実値に基づくミニ問題。 紙とペンで挑戦してから解答へ。
| # | 問題 | 解答 (実値ベース) |
|---|---|---|
| Q1 | 高齢化率の沖縄 (23.8%) と秋田 (39.1%) を 23% 起点の棒グラフで描いたとき、 視覚的高さの比は実値比の何倍に増幅されるか? | 12 倍 (1.64 → 20.1) |
| Q2 | 47 県の高齢化率に Sturges のビン幅ルールを適用すると、 ヒストグラムの推奨ビン数はおよそ何本か? | 7 本 (1 + log2(47)) |
| Q3 | 総人口で KMeans 3 クラスタを作り、 クラスタ間で一般診療所数を ANOVA すると F・p はどうなり、 なぜ「差あり」が自明か? | F=185, p≈0 (総人口と診療所数が強相関→循環論法で必然) |
| Q4 | 関東地方の人口シェア 34.7% を円グラフで読むときの平均誤差はおよそ何 pt か? (Cleveland-McGill) | ±6.3pt (棒なら ±1.7pt、 約 3.6 倍) |
| Q5 | 2013-2022 の合計特殊出生率 (1.48→1.36) の中で「上昇トレンドに見える期間」は何通り抽出できるか? | 5 通り (チェリーピッキング) |
| Q6 | 47 県の人口と出生数の Pearson 相関は r=0.995。 東京を除外すると r は概ねいくつになるか? | r ≒ 0.993 (外れ値を除いても強相関) |
| Q7 | 二重 Y 軸で人口を log、 出生数を線形にすると、 視覚的同期性 (相関係数) は 0.995 から概ねいくつまで下がるか? | 0.908 まで (約 0.09 低下) |
| Q8 | SSDSE-B-2026 で報告に使うグラフを 1 種類だけ残すなら、 比率比較に最も誤読が少ないのは? | 並び替えた水平棒グラフ (Cleveland 順) |
誤解を招くグラフに関連する概念の関係図です。 上流(データ品質)→ 中心(誤誘導の種類)→ 下流(対策・評価)の流れで配置しています。
上図の読み方: 緑の矢印は「誤誘導の手口 → 誤解を招くグラフ(中心概念)」の包含関係、 オレンジの矢印は「中心概念 → 対策ツール」の関連。
誤解を招くグラフを「見抜く」「描かない」「指摘する」3 段階で学ぶ順序を整理します。
| 段階 | 学ぶこと | 関連する隣接用語 |
|---|---|---|
| L1 見抜く | 軸切り・対数軸・群選定の癖を 30 秒で見抜く | データ可視化 / ビジュアル知覚 / バイアス |
| L2 描かない | 小グラフ集 (small multiples)、 棒の並び順、 直接ラベル | グラフ文法 / 情報デザイン / Tufte 原則 |
| L3 指摘する | 事前登録、 報告チェックリスト、 査読観点 | 統計の前提 / 再現性 / 研究倫理 |
L1 から順に練習するのが王道ですが、 実務では L3 の「指摘」スキルが最も需要が高い。 同僚の作った図を 1 日 1 枚レビューする、 という習慣が L3 を伸ばします。
学会発表・社内会議・行政広報の図表を 1 枚 30 秒で点検するためのチェックリスト。 SSDSE-B-2026 の指標で作った図を例に、 各項目で 「なに」を見て「どう判定する」 かを書きます。 査読観点を覚えるとレポート時に同じ落とし穴を踏まなくなります。
| No | 観点 | 確認すること | SSDSE-B-2026 を題材にした典型例 |
|---|---|---|---|
| 1 | 出典 | 公的統計か、 取得日と版番が併記されているか | 「SSDSE-B-2026 (総務省統計局、 2025 年版)」と明記 |
| 2 | 単位 | 軸ラベルに単位 (千人, %, 百万円) が書いてあるか | 「人口」だけだと千人なのか万人なのか不明 |
| 3 | 軸起点 | 棒グラフは 0 起点か (切られているなら明記) | 高齢化率を 23% から始めると 12 倍に増幅 |
| 4 | 軸目盛 | 目盛の幅は等間隔か、 対数なら明示されているか | 人口の log 軸を線形と読むと鳥取と東京が近く見える |
| 5 | 二重軸 | 左右で別軸を使っていないか (使うなら小グラフ集に置換) | 人口と出生数は別の図に分けて比較する |
| 6 | 並び順 | 棒の順序は値で降順か、 任意順なら理由が書かれているか | 47 都道府県を北→南で並べると比較しづらい |
| 7 | 色 | categorical なら colorblind-safe か、 連続なら見やすいか | 赤緑だけの 2 色は CVD 8% の読者に読めない |
| 8 | 凡例 | 凡例は線・棒に直接ラベル付けで代替できないか | 折れ線が 4 本以上なら凡例より直接ラベル |
| 9 | 注釈 | 注目点に矢印・テキストで読み方が書かれているか | 秋田の高齢化が突出している点に矢印 |
| 10 | 不確実性 | エラーバー・推定誤差が示されているか | 県別高齢化率は 95%CI を併記 |
| 11 | 期間 | 時系列なら期間の取り方が恣意的でないか | 2014-2015 だけ切ると出生率が「上昇」 |
| 12 | 群定義 | 群の切り方が事前登録されているか | 「政令市あり vs なし」と「8 地方」で p 値が変わる |
| 13 | サンプル数 | n が小さい群を強調していないか | 四国 4 県の中央値は 47 県全体より不安定 |
| 14 | 外れ値 | 外れ値の影響が言及されているか | 人口で東京を含む / 除く時の相関係数を併記 |
| 15 | ビン幅 | ヒストグラムのビン幅ルール (Sturges/FD) が明記されているか | 47 県なら Sturges で 7 本程度が標準 |
| 16 | アスペクト比 | 縦横比でトレンドが誇張されていないか | 縦長にすると微増が「急増」に見える |
| 17 | 3D 効果 | 3D 円・3D 棒で読み違いを誘発していないか | 3D 円グラフは原則禁止 |
| 18 | ラベル可読性 | 小さすぎる/重なる文字がないか | 47 県を横棒に並べると名前が重なりがち → 縦棒推奨 |
| 19 | 再現性 | 図を再現するコードが公開されているか | 本ページの Python 4 ブロックを公開で代替 |
| 20 | 解釈文 | 図のキャプションに「だから何が言えるか」が 1-2 行 | 「秋田の高齢化率は全国最高、 39.1%」だけで終わらせない |
20 項目すべてを通過する必要はありません。 「該当する観点だけ書く」「触れたくない観点は意図的に避けない」が査読の基本姿勢です。 「軸を切った理由」「群定義の根拠」を本文に書けば、 読者はそれを承知の上で読み解けます。
最後に、 架空ではない「典型的な自治体広報」のパターンを SSDSE-B-2026 の値で書き起こし、 査読チェックリストに沿って添削します。 「秋田県人口減少対策パンフレット」を想定したミニ題材です。 自治体広報は紙幅が限られるため、 限られた図で 正確に伝える 設計力が問われます。
原文(添削前): 「秋田県の高齢化率は全国平均の 1.3 倍、 深刻な状況が続いています」。 これだけだと、 読者は「1.3 倍 = やや高い」と読み流す可能性があります。 同じ実値 (秋田 39.1% / 全国平均 29.1%) を踏まえて、 次の 3 通りの書き分けが可能です。
| 表現 | 使うべき場面 | 読者の受け取り方 | 推奨される図 |
|---|---|---|---|
| 「秋田 39.1% / 全国平均 29.1% / 差 +10.0pt」 | 事実の正確な伝達 | 正確、 ややそっけない | 水平棒 (0 起点) |
| 「全国平均より 9 ポイント 高く、 47 都道府県で最高」 | 問題提起・関心喚起 | 「全国最高」が記憶に残る | 47 県順位の点プロット |
| 「30 年前 (1995 年 13%) から 3 倍に」 | 推移を強調 | 時系列上の劇的変化 | 折れ線 (0 起点 + 注釈) |
どの表現も実値を歪めていません。 ただし、 「3 倍に」だけを切り出して使うと「秋田の高齢化は急速に進んだ」印象が独り歩きします。 広報担当者は 3 表現を同じパンフレットに併記 し、 読者に解釈の幅を渡すのが理想です。 SSDSE-B-2026 のような公的統計は、 同じ実値が 事実伝達・問題提起・推移強調 の 3 つの役割を担えるよう設計されています。
この添削手順を社内研修で 1 度通すと、 「数字を 盛らない が、 印象を 適切に届ける」感覚が共有できます。 誤解を招くグラフを撲滅するには、 個々のテクニックよりも組織文化のほうが効きます。
誤解を招くグラフを論じるときに頻出する周辺概念を、 SSDSE-B-2026 を題材に 30 字以内の最短定義 + 用例 でまとめました。 参考書や報告書で見かけたときの「とりあえず読む」ベースとして活用できます。 紙幅の都合で詳細は各用語ページに任せています。
| 用語 | 最短定義 | SSDSE-B-2026 での用例 |
|---|---|---|
| Truncated axis | 軸を 0 でなく途中から始める | 高齢化率 23% 起点で 12 倍誇張 |
| Dual axis | 左右で異なる Y 軸を使う | 人口 + 出生数 の同時表示 |
| Cherry picking | 都合のよい期間/群だけ抽出 | 出生率 2014-2015 だけで上昇 |
| Simpson's paradox | 全体と群分けで傾向が逆 | 全国相関と地方別相関の符号差 |
| Small multiples | 同一軸の小グラフを並列配置 | 8 地方ブロックで高齢化率を並列 |
| Lying with statistics | Huff (1954) の古典書名 | 広報文章の添削の出発点 |
| Chartjunk | 情報を持たない装飾 | 3D 円グラフの陰影 |
| Data-ink ratio | 情報を表すインクの比率 (Tufte) | 罫線を減らすと向上 |
| Lie factor | 図の効果量 / 実データの効果量 | 12 倍 = 大幅な歪曲 |
| Bin width rule | ヒストグラムビン幅の指針 | Sturges = 7 本 / FD = 2.5pt |
| Preregistration | 仮説・群定義の事前登録 | 8 地方分類を分析前に固定 |
| CVD-safe palette | 色覚多様性に配慮した色設計 | viridis / cividis を採用 |
12 語のうち 8 語以上を即座に説明できれば「中級者」、 全部に SSDSE-B-2026 級の実例を出せれば「上級者」と言えます。 用語自体を覚えるよりも、 各用語に対応する図の修正案 を即座に出せるようになるのが実用上の目標です。 たとえば「Lie factor が 5 を超えたら設計を作り直す」「Bin width は Sturges か Freedman-Diaconis のどちらかを必ず併記する」といった、 ルール化までを覚えられればプロジェクト現場で十分使える水準です。
合成データで Y軸を 0 から始めた場合と 95 から始めた場合の見かけ倍率を比較する。
| 項目 | 値 |
|---|---|
| A | 97 |
| B | 98 |
| C | 99 |
| D | 100 |
1 2 3 4 5 6 7 8 9 | import numpy as np vals = np.array([97, 98, 99, 100]) # Y軸 0 起算: 高さ vals bars_0 = vals # Y軸 95 起算: 高さ vals-95 bars_95 = vals - 95 print(f"0 起算 D/A 比: {bars_0[3]/bars_0[0]:.3f}") print(f"95 起算 D/A 比: {bars_95[3]/bars_95[0]:.3f}") print(f"誇張倍率: {(bars_95[3]/bars_95[0])/(bars_0[3]/bars_0[0]):.2f}") |
💬 手計算 (Step 2) 2.43 倍と Python 出力が完全一致。 Y 軸切断で 2.4 倍に誇張される。
Tufte の Lie Factor(LF)は、 グラフ上の視覚的な変化量をデータの実際の変化量で割った比率であり、 1.0 が理想値(歪みなし)、 1.0 から離れるほど誤誘導が大きいことを意味する。 SSDSE-B-2026 の人口データ(A1101)を使ってこの指標を具体的に解釈してみる。
東京都(14,086 千人)と秋田県(914 千人)の 2 県を比較するとする。 実データの比率は 14086 ÷ 914 ≈ 15.4 倍。 この棒グラフを Y 軸 800 〜 15000 の範囲で描いた場合、 棒の見かけの高さは (14086-800):(914-800) = 13286:114 ≈ 116.5 倍 になる。 Lie Factor = 116.5 ÷ 15.4 ≈ 7.56 となり、 実際より 7 倍以上の差があるように見える誤誘導グラフが生まれる。
| Y 軸範囲 | 東京の棒高さ | 秋田の棒高さ | 見かけ比 | Lie Factor |
|---|---|---|---|---|
| 0 〜 15000(正しい) | 14086 | 914 | 15.4 倍 | 1.00 |
| 500 〜 15000 | 13586 | 414 | 32.8 倍 | 2.13 |
| 800 〜 15000(誤誘導) | 13286 | 114 | 116.5 倍 | 7.56 |
Y 軸を 0 起点から 800 起点に変えるだけで Lie Factor が 1.0 から 7.6 に跳ね上がる。 これが「Y 軸切断」が可視化において最も警戒すべき手法として挙げられる理由である。 実務で棒グラフを作成するときは必ず Y 軸最小値を 0 に設定し、 もし範囲を絞る場合は「Y 軸は〇〇から」と明記したタイトルや注記を付ける必要がある。
Tufte の原則では LF が 0.95〜1.05 の範囲(±5%以内)に収まっていれば誠実な図とみなされる。 1.0 未満は差を過小表現、 1.0 超は差を過大表現している。 学術論文・報道グラフ・行政公表資料では LF を明記することが求められ始めており、 データジャーナリズムの文脈では「グラフの LF を計算して示す」実践が広がっている。
誤解を招くグラフは大きく 5 種類に分類できる。 それぞれの特徴と修正方針を以下に示す。
| 種別 | 誤誘導の仕組み | SSDSE-B での典型例 | 修正方針 |
|---|---|---|---|
| Y 軸切断 | 最小値を 0 以外にして差を誇張 | 人口グラフの Y 軸を 800 万から開始 | Y 軸最小値を 0 に固定。 変更時は注記必須 |
| 面積詐欺(ピクトグラム) | 1 辺を 2 倍にすると面積は 4 倍になる | 出生率アイコンを横幅で拡大 | 面積( √ スケール)で大きさを調整する |
| 3D 効果 | 奥行きで前後のバーの大小が逆転して見える | 地域ブロック別の 3D 円グラフ | 2D フラットデザインのみ使用 |
| 対数軸の無断使用 | 指数的増加を直線に見せる | 感染者数の対数グラフを線形と誤認させる | 「対数軸」と明記。 線形版を並置する |
| 選択的データ表示 | 都合の良い期間・地域だけ切り取り | 景気回復期間だけの GDP グラフ | 全期間データを表示し、 選択範囲を明記する |
これら 5 種の誤誘導パターンはいずれも「意図的に使えば詐術、 無意識に使えば誤り」になる。 自分のグラフが上記のどの類型に当てはまっていないかを毎回チェックする習慣が、 誠実なデータビジュアライゼーションの第一歩となる。 また読者側としても同じ 5 類型を頭に入れておくと、 報道・広告・政治資料に含まれる誤誘導を見抜く目が養われる。
グラフを作る場面ごとに「どこで誤解が生まれやすいか」を確認し、 適切な対策を選ぶための 4 段階フロー。
SSDSE-B-2026 の人口(A1101)や 65 歳以上人口(A1303)を題材に上記 4 ステップを練習すると、 実務で同じミスを繰り返さなくなる。
誠実な棒グラフを最短で作るための Python 5 行ルールを示す。 ① df.sort_values(col) で順序を固定、 ② ax.bar() で描画、 ③ ax.set_ylim(0, ...) でゼロ起点を強制、 ④ ax.set_xlabel() / ax.set_ylabel() で単位付きラベル、 ⑤ fig.text(0.99, 0.01, '出典: SSDSE-B-2026', ha='right', fontsize=9) で出典を右下に記載する。 この 5 行を雛形にして毎回貼り付ける習慣を付けると、 上記チェックリストの半分は自動的に通過する。
折れ線グラフでは Y 軸ゼロ起点の縛りを緩めることができるが、 その場合は必ず「Y 軸は〇〇から」という注記をグラフ内に入れ、 Lie Factor が 2 を超えないよう数値で確認する。 特に時系列データ(SSDSE-B の年次変化)では変化率が小さい場合に軸切断が誤解を生みやすいため、 変化率グラフ(前年比 %)と絶対値グラフを必ず両方提示するのが安全策である。
上記の 5 行ルールと 10 項目チェックリストは、 可視化の授業・研修でそのまま演習課題として使える。 受講者が SSDSE-B-2026 の任意の列(例: 出生数 A4101、 消費支出 L3221)を選んで棒グラフを作成し、 Lie Factor を計算して提出する形式にすると、 誤誘導グラフの概念が体験的に定着する。 評価観点としては「ゼロ起点の遵守」「Lie Factor の計算・記載」「出典と n 数の明記」の 3 点を必須要件とし、 それ以外の工夫(色覚バリアフリー・注記の丁寧さ・比較図の追加)を加点要素とするとバランスが良い。 こうした演習を通じて、 受講者が「誠実な可視化」を自律的に実践できるデータリテラシーを身につけることが最終目標となる。
「誤解を招くグラフ」は可視化品質の問題であると同時に、 統計的推論・機械学習・データ倫理と直接つながっている。
これらの接続を意識することで、 「誤解を招くグラフ」を中核に据えた一貫した分析・報告パイプラインを構築できる。
この 誤解を招くグラフ ページで出てくる主要キーワードを一覧します。チップをクリックすると該当箇所へジャンプできます。
あなたは、可視化 の入口で「誤解を招くグラフ(Deceptive / Misleading Graph)」という用語に出会ったところです。 この用語は 軸の切り取り・3D 化・チェリーピッキングなどで、データの実態より大きく見せる/反対方向に見せる図。
本ページでは、まず数式や形式的定義よりも、実データ(SSDSE-B-2026, 47 都道府県)で具体的な値を見ます。 そのあと、数式 → 計算 → Python 実装 → 落とし穴 → 関連用語、という順で「使える知識」に組み立てていきます。
誤解を招くグラフ の本質は、ひとことで言うと「軸の切り取り・3D 化・チェリーピッキングなどで、データの実態より大きく見せる/反対方向に見せる図。」です。 数式に踏み込む前に、まずイメージで掴みましょう。
ヒント:直感が掴めたら、次の「数式または定義」セクションで形式化を確認してください。 形式化と直感がつながれば、誤解を招くグラフ はもう武器です。
誤解を招くグラフ を一般化して書くと、観測ペア $(x_1, y_1), \dots, (x_n, y_n)$(ここでは $n = 47$ 都道府県)に対して、次の関係を仮定します。
$$ \boxed{\quad y = f(x_1, x_2, \dots, x_p; \theta) + \varepsilon \quad} $$ここで $\theta$ は推定したいパラメータ、$\varepsilon$ はモデルでは説明しきれない誤差項。 誤解を招くグラフ の流派ごとに、$f$ の形(線形・ロジスティック・木)、$\varepsilon$ の分布(正規・二項・ポアソン)が変わります。
| 記号 | 意味 | SSDSE-B での例 |
|---|---|---|
| $x$ | 説明変数 | A1101(47 都道府県の人口(軸操作の比較)) |
| $y$ | 目的変数 | 死亡率・出生率など |
| $n$ | 標本数 | 47(都道府県数) |
| $\theta$ | パラメータ | 傾き・切片など |
| $\varepsilon$ | 誤差項 | モデルで説明しきれない残り |
上の式 $y = f(x; \theta) + \varepsilon$ を「数学者の声」ではなく、「現場の声」で読み直してみます。
合言葉:「定義は短い、解釈は長い」。誤解を招くグラフ はたった 1 行の式ですが、それを 47 都道府県データに当てると、5 種類のチェックリスト(線形性・独立性・等分散・正規性・外れ値)が芋づる式に出てきます。
数式が読めたら、すぐに 実データ(SSDSE-B-2026, 47 都道府県, 2023 年度)で計算しましょう。 抽象を 47 行の表に落とすと、急に理解できることがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import pandas as pd # df2023 はこのあとのブロックで作っているので、ここでも用意しておく df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df2023 = df[df['SSDSE-B-2026'] == 2023].copy() # 誤解を招くグラフ の代表値を SSDSE-B-2026 で確認 col = 'A1101' s = df2023[col].astype(float) print('n :', len(s)) # 47 print('mean :', round(s.mean(), 2)) print('median :', round(s.median(), 2)) print('std :', round(s.std(), 2)) print('min / max :', s.min(), '/', s.max()) print('Top 3 prefs :') print(df2023.nlargest(3, col)[['Prefecture', col]]) |
結果を見ると、47 都道府県のうち上位 3 県が突出しているか、なだらかに分布しているか、すぐ分かります。 この「分布の形」が見えると、誤解を招くグラフ を語る土台ができたことになります。
Python の実装は「読む → 集計 → 描く → 報告」を一直線に書きます。長いコードよりも、各ステップが分離していることが大事です。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd import numpy as np import matplotlib.pyplot as plt # SSDSE-B-2026 を読み込み(47 都道府県の人口(軸操作の比較)) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) # 2023 年度(最新)だけ抽出 df2023 = df[df['SSDSE-B-2026'] == 2023].copy() print(df2023.shape) # (47, ...) print(df2023[['Prefecture', 'A1101']].head()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import os os.makedirs('html/figures', exist_ok=True) # 保存先のフォルダを作っておく # 誤解を招くグラフ を 47 都道府県でビジュアル化 fig, ax = plt.subplots(figsize=(9, 6)) df2023.sort_values(col, ascending=False).plot.bar( x='Prefecture', y=col, ax=ax, color='#00897B', legend=False) ax.set_title('47 都道府県の人口(軸操作の比較)(SSDSE-B-2026, 2023)') ax.set_ylabel(col) ax.set_xlabel('都道府県') plt.xticks(rotation=90) plt.tight_layout() plt.savefig('html/figures/deceptive-graph.html_r18_bar.png', dpi=120) plt.show() |
レポート文例:「SSDSE-B-2026(2023 年度, n=47)に基づいて 誤解を招くグラフ を確認したところ、平均は X、標準偏差は Y、上位 3 県は東京・神奈川・大阪であった。 SSDSE-B-2026 の人口を「ゼロ起点」と「1400 万付近で始める軸」で 2 通り描き比べると、後者では小さな差が大きく見え、誤解の典型例になります。」
合言葉:レポート提出前に「ゼロ起点で 1 枚描き直す」「外れ値を 1 県外して再計算」「逆方向の因果を 1 行で否定する」を必ずやる。
本ページに登場した Python コードはすべて以下のテンプレートで読み解けます:
覚え方:「Read → Roll up → Render → Read it back」。 最後の「Read it back」は、出力された数字や図を口に出して 1 度言うこと。 これで 誤解を招くグラフ の現場運用は十分に回ります。
使います。前処理(特徴量 → 入力ベクトル)、評価(指標の可視化)、解釈(係数の可視化)など、機械学習のあらゆる工程で 誤解を招くグラフ は登場します。
記述統計や 1 変量・2 変量の可視化には十分。ただし複数の説明変数を同時に検討するときは、自由度が枯れます。bootstrap や情報量規準(AIC/BIC)で補強しましょう。
独立行政法人統計センター(NSTAC)「SSDSE」サイトから無料でダウンロードできます。本ページの実装はすべて data/raw/SSDSE-B-2026.csv を前提にしています。
SSDSE は教育目的での利用が許諾されています(出典明示、改変記録)。論文公開時は出典欄に「総務省統計局, SSDSE-B-2026」を必ず書きましょう。
① ヒストグラム 1 枚を描く → ② 平均・中央値・標準偏差を読み上げる → ③ 上位 3 県・下位 3 県を暗記する → ④ 2 変量の相関を 1 つ確認する → ⑤ レポート 1 行にまとめる。これを 47 都道府県データで 3 回回せば、用語の地形が掴めます。
本リポジトリの 論文一覧 から「可視化」カテゴリの論文を見ると、誤解を招くグラフ を実際に使った再現コードが付いています。
「目的 → データ → 誤解を招くグラフ の選択理由 → 結果(図 + 数値)→ 解釈 → 限界(n=47, 単年)→ 次の一手」の順が王道です。
発表・提出前に以下の 10 項目を通過していれば、 誤誘導グラフとして査読者・聴衆に指摘される可能性は大幅に下がる。 SSDSE-B-2026 のデータで試作した図を例として使うと判定しやすい。
| # | チェック項目 | 判定基準 | 修正アクション |
|---|---|---|---|
| 1 | Y 軸がゼロ起点か | 棒グラフ・面グラフは必ず 0 から | ax.set_ylim(0, ...) で修正 |
| 2 | 軸ラベルに単位が明記されているか | 「人口 (千人)」「出生率 (‰)」など | ax.set_ylabel('人口(千人)') を追加 |
| 3 | タイトルが中立的か | 結論を誘導する語句を避ける | 「急増」「激減」より「推移」を使う |
| 4 | 3D 効果・爆発パイが使われていないか | 2D フラットのみ許可 | matplotlib デフォルト 2D に戻す |
| 5 | 色が情報を歪めていないか | 強調色は 1〜2 色まで、 残りはグレー | ColorBrewer の qualitative パレット使用 |
| 6 | 出典・データ年次が記載されているか | 「SSDSE-B-2026(2023 年度)」など | fig.text で右下に小文字で記載 |
| 7 | サンプル数が明示されているか | n=47 など | タイトルまたは脚注に n= を追記 |
| 8 | 対数軸を使う場合は明記されているか | 「対数スケール」と軸タイトルに記載 | ax.set_yscale('log') と同時に注記 |
| 9 | Lie Factor ≤ 1.05 か | Tufte 基準の許容範囲内 | LF = 視覚比 ÷ データ比 を計算して確認 |
| 10 | 色覚多様性への対応ができているか | 赤緑の対比に依存していない | Sim Daltonism 等で確認、 形や線種で補う |
このチェックリストを図の生成コードの直後に Python コメントとして埋め込んでおくと、 レビュー時に自動的に目に入るようになる。 特に項目 1(ゼロ起点)と項目 9(Lie Factor)は、 可視化品質を数値で担保できる唯一の指標として重要視されている。
用語は単独では覚えづらいので、前提・並列・発展の 3 方向で 16 件並べます。
勧め方:1 日 1 リンク。クリックして読んだら、誤解を招くグラフ のページに戻り、「誤解を招くグラフ とこの用語はどう違う?」を 1 行書く。
合言葉:5 STEP のうちどれか 1 段でも飛ばすと、結論が「数字だけ」になり、読者の腑に落ちなくなります。 誤解を招くグラフ は「数字 + 物語」のセットで完成です。
np.random.seed で作って「再現実験しました」と書く(教育用途では SSDSE-B-2026 を使うのが必須)iloc[:, 5] のように位置で参照し、SSDSE のバージョン違いで壊れるコードを書くx1, x2, x3 のように匿名化し、読者が意味を追えないコードにする誤解を招くグラフ は、19 世紀末〜 20 世紀初頭の統計学黎明期から発達してきました。可視化 の中核として、Galton、Pearson、Fisher、Yule などが基礎を築き、現代では SSDSE のような公的データを使った教育素材で広く扱われています。
誤解を招くグラフ は、観測ペア $(x_i, y_i)_{i=1}^{n}$ から条件付き期待値 $E[y \mid x]$ または分布 $P(y \mid x)$ を推定する道具です。 線形・非線形・パラメトリック・ノンパラメトリックという 4 つの軸の中で、誤解を招くグラフ は「可視化」という棚に並んでいます。
df.dropna() の前に必ず欠損率を df.isna().mean() で測る。誤解を招くグラフ は 記述統計・データサイエンス・機械学習 の交差点に位置します。 どの分野から入っても、いずれは 誤解を招くグラフ を通ります。
同じテーマで使い回せる narration を 5 つ並べておきます。コピペして「コード解説」欄に貼ってください。
誤解を招くグラフ を学ぶときに使う SSDSE-B-2026 は、47 都道府県 × 約 110 列 × 複数年度のパネルデータです。 本ページでは「2023 年度の 47 行」を主に使います。 以下に、よく登場する代表的なカラムを示します。
| SSDSE コード | 日本語名 | 単位 | 誤解を招くグラフ での主な使い方 |
|---|---|---|---|
| Code | 地域コード | — | JOIN キー |
| Prefecture | 都道府県名 | — | カテゴリ軸・ラベル |
| A1101 | 総人口 | 人 | 説明変数(規模) |
| A1303 | 65 歳以上人口 | 人 | 高齢化率の分子 |
| A4101 | 出生数 | 人 | 人口動態の説明変数 |
| A4200 | 死亡率 | ‰ | 目的変数の代表 |
| B4101 | 年平均気温 | ℃ | 気候系の説明変数 |
| L3221 | 消費支出 | 円 | 家計の目的変数 |
使い方のコツ:列名はすべて A1101 のような英数記号です。SSDSE のコードブックで日本語ラベルを確認しながら使ってください。
本ページの例では A1101(47 都道府県の人口(軸操作の比較))を中心に使っています。
解説は最小限。コードは 10 行以内。これで 誤解を招くグラフ の最短ルートが手に入ります。
import pandas as pddf = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])df = df[df['SSDSE-B-2026'] == 2023]col = 'A1101'print(df[['Prefecture', col]].sort_values(col, ascending=False).head())import matplotlib.pyplot as pltdf.plot.hist(y=col, bins=20)plt.title('47 都道府県の人口(軸操作の比較)(SSDSE-B-2026, 2023)')plt.savefig('figures/deceptive-graph.html_r18_hist.png', dpi=120)plt.show()注意:10 行で動かせる、というだけで、これがゴールではありません。 誤解を招くグラフ の本当の難しさは「描いた図をどう解釈するか」「報告にどう落とすか」にあります。
誤解を招くグラフ の結果を、ゼミ・卒論・社内会議で報告するときの定型文を 3 つ用意しました。 最初は丸ごとコピー、慣れたら差し替えて使ってください。
「本研究では、SSDSE-B-2026(n=47, 2023 年度)を用いて 誤解を招くグラフ を確認した。 主たる説明変数は A1101(47 都道府県の人口(軸操作の比較))であり、47 都道府県を対象とした分布の確認、相関の評価、誤解を招くグラフ を用いた分析を実施した。 分析の結果、上位 3 県・下位 3 県の特徴と、SSDSE-B-2026 の人口を「ゼロ起点」と「1400 万付近で始める軸」で 2 通り描き比べると、後者では小さな差が大きく見え、誤解の典型例になります。」
「47 都道府県の人口(軸操作の比較) を 47 都道府県で比較したところ、東京・神奈川・大阪など大都市圏が突出していることが分かった。 誤解を招くグラフ を用いた分析から、地域差は単に人口規模の違いだけでは説明できず、複数要因の組み合わせで生じていると示唆された。 今後の打ち手は、上位県のベストプラクティスを参考にしつつ、下位県への支援策を検討することである。」
「皆さん、誤解を招くグラフ はひとことで言うと『軸の切り取り・3D 化・チェリーピッキングなどで、データの実態より大きく見せる/反対方向に見せる図。』です。 今回は SSDSE-B-2026(総務省統計局, 47 都道府県, 2023 年度)を使って、実際の数字でこの考え方を確かめました。 皆さん自身でも、別の指標(人口、出生率、家計支出など)に置き換えて同じ手順を試してみてください。」
同じ用語でも、見る立場によって意味が変わります。3 つの視点を切り替えて、用語の輪郭を立体的に掴みましょう。
統計学者にとって 誤解を招くグラフ は「データから母集団を推定する道具」です。 確率モデル・尤度・不偏性・効率性・一致性などの数学的性質に注目し、漸近理論で性能保証を行います。 47 都道府県データは「小標本(n=47)」と分類され、bootstrap や情報量規準による補強が必要になります。
データサイエンティストにとって 誤解を招くグラフ は「ビジネス課題を数字で答えるパイプラインの 1 部品」です。 モデルの理論的性質より、運用性・解釈性・更新コストを重視します。 SSDSE のような公的データを用いるときは「データの出典・更新頻度・ライセンス」を最優先で確認します。
教育の現場では 誤解を招くグラフ は「初学者が躓きやすいポイント」を含む単元です。 抽象的な数式よりも、具体的な 47 都道府県データで手を動かし、図を描き、結果を口頭で説明できるようになることが目標になります。 本ページの並び(直感 → 数式 → 計算 → Python → 落とし穴)は、まさにこの教育的アプローチに沿っています。
視点切り替えの効果:1 つの用語を 3 通りに眺めると、自分が今どの立場で議論しているか自覚できます。 論文を読むときは ①、現場で使うときは ②、人に教えるときは ③ ── と意識的に切り替えてください。
誤解を招くグラフ と似た用語を、使い分けの観点から並べます。違いを言語化できれば、迷いが減ります。
| 用語 | 目的 | 入力 | 出力 | 強み | 弱み |
|---|---|---|---|---|---|
| 誤解を招くグラフ | 軸の切り取り・3D 化・チェリーピッキングなどで、データの実態より大きく見せる/反対方向に見せる図。 | 47 都道府県 × 約 110 変数 | 図 + 表 + 200 字レポート | 直感的、再現容易 | 小標本(n=47)の制約 |
| 相関係数 | 2 変量の同調を 1 数で要約 | x, y の 47 ペア | r ∈ [−1, +1] | シンプル | 非線形は捉えられない |
| 線形回帰 | 条件付き期待値の線形近似 | 説明変数群 | 回帰係数・予測値 | 解釈容易 | 非線形には弱い |
| ロジスティック回帰 | 2 値分類 | 説明変数群 | 確率 + 係数 | 分類問題の標準 | 線形決定境界 |
| ランダムフォレスト | 非線形分類・回帰 | 大量変数 | 予測 + 重要度 | 非線形対応 | 解釈やや難 |
誤解を招くグラフ は 可視化 の中で「軸の切り取り・3D 化・チェリーピッキングなどで、データの実態より大きく見せる/反対方向に見せる図。」を担う基本道具です。可視化 の他のトピックは、この基本の応用または並列の道具にあたります。
使えます。SSDSE-A(市区町村)、SSDSE-C(年次推移)、SSDSE-D・E(個票)など、誤解を招くグラフ の手順はそのまま適用できます。粒度(県・市・個人)に応じて n が変わるので、結果の信頼性も変わります。
SSDSE は年に 1 度更新されます。誤解を招くグラフ のコード自体は変更不要ですが、結果(数値・図)は最新年度のものに置き換えてレポートしましょう。出典欄に「SSDSE-B-2027(仮)」と書き換えるのを忘れずに。
できます。ピボット → グラフ → 関数 で代表値や相関は出ます。ただし、再現性・履歴管理・自動化の面で Python に劣ります。学習用には Python を強く勧めます。
進めます。誤解を招くグラフ は機械学習の「特徴量設計」と「結果解釈」の両端で必須です。AI と聞くと深層学習を連想しがちですが、SSDSE のような表形式データでは線形モデル + 誤解を招くグラフ の組み合わせで十分実用になります。
3 つ確認します:①ファイルパス(data/raw/SSDSE-B-2026.csv)が合っているか、②エンコーディングが cp932 か、③ヘッダ 2 行目の日本語ラベルを skiprows で飛ばしたか。これで 9 割解決します。
figures/ ディレクトリが存在しない可能性があります。import os; os.makedirs('figures', exist_ok=True) を先頭に追加してください。
本ページの 12 セクションを順に読み進めるのが最短です。特に「直感 → 数式 → 計算 → Python」の 4 段が腑に落ちれば、用語の 80 % は理解できたとみなせます。
このカードを印刷し、SSDSE-B-2026 で 1 回手を動かせば、用語の「使える形」が定着します。 誤解を招くグラフ はあくまで「軸の切り取り・3D 化・チェリーピッキングなどで、データの実態より大きく見せる/反対方向に見せる図。」というシンプルな考え方の道具ですので、迷ったらこの 1 行に戻ってください。
同じ実データ(SSDSE-B-2026、2023 年、総人口 A1101)でも、見せ方を変えるだけで印象は操作できます。 下の操作盤で Y 軸の起点・反転・対数化・縦横比を自分で動かし、「実際の差」と「見かけの差」がどれだけ乖離するかを Lie Factor で確認してください。 使用データは 広島県 2,738 千人/京都府 2,535 千人/宮城県 2,264 千人/新潟県 2,126 千人(いずれも実測値)です。
※ グラフ上を左右にドラッグ(タッチ可)しても Y 軸起点を動かせます。
まずは「Y 軸の起点」を右へ動かしてみましょう。データは 1 つも変えていないのに、見かけの差だけが膨らんでいきます。
東京都 14,086 千人と秋田県 914 千人(実測値、比 15.4 倍)を円の大きさで表すとき、 半径を人口に比例させると面積は比の 2 乗(約 237 倍)に膨らみます。正しくは面積を人口に比例させます。トグルで切り替えて比べてください。
上の操作でデータ(4 県の人口)は一度も変わっていません。変わったのは「値 → 高さ・面積」という写像のルールだけです。 グラフの印象は写像で決まるので、写像を歪めれば同じ数字から正反対の印象さえ作れます。 読者としての防御策は単純で、まず軸を読む(起点・目盛間隔・単位・対数か否か)こと。作り手としての誠実さは、視覚的な変化量をデータの変化量に一致させる(Lie Factor ≈ 1)ことに尽きます。
Tufte は「グラフィカル・インテグリティ」として、視覚表現の変化量はデータの変化量に比例すべきこと(Lie Factor ≈ 1)、次元の乱用(1 次元の量を面積や体積で表さない)を避けること、ラベルと文脈を十分に示すことを挙げました。 実務では ①棒はゼロ起点 ②目盛は等間隔 ③単位・出典・n を明記 ④色や 3D の装飾で量を歪めない ⑤選択範囲を開示、の 5 原則をチェックリスト化すると再現性が上がります。 誤誘導は「意図的なら詐術、無意識なら誤り」であり、いずれも読者の意思決定を歪める点で倫理の問題です(詳しくは データ倫理)。 基礎となる図法は 棒グラフ・折れ線グラフ・ヒストグラム・円グラフ の各ページで確認できます。
このページの他の節は主に 軸・スケール・期間・面積(=図の「描き方」)の操作を扱ってきました。 ここでは角度を変え、 図を一切歪めなくても 「何で割るか(分母)」を変えるだけで正反対の印象を作れることを、 SSDSE-B-2026 の実測値で示します。 いわゆる「絶対数 vs 率」問題です。
「東京は病院が日本一多い」も「東京は人口あたりの病院がほぼ最下位」も、 どちらも同じ1つのデータから作れる真実です。 前者は絶対数、 後者は人口10万人あたり率。 軸を切らなくても、 3D にしなくても、 分母を選ぶ/選ばないだけで結論の向きが変わります。 絶対数の棒グラフは、 多くの場合「人口の棒グラフを描き直しただけ」になりがちです。
SSDSE-B-2026・2023年・47都道府県、 I510120(一般病院数)を A1101(総人口)で割った実測値:
| 都道府県 | 病院数 | 絶対数の順位 | 10万人あたり | 率の順位 |
|---|---|---|---|---|
| 東京都 | 588 | 1位 | 4.17 | 41位 |
| 神奈川県 | 289 | 7位 | 3.13 | 47位 |
| 高知県 | 107 | 25位 | 16.07 | 1位 |
| 徳島県 | 90 | 28位 | 12.95 | 2位 |
読み方:東京都は絶対数で堂々1位(588病院)なのに、 人口あたりでは41位。 逆に 高知県は絶対数25位(107病院)なのに率では1位。 神奈川県に至っては絶対数7位・率では最下位47位。 「病院が多い県ランキング」を絶対数で見せるか率で見せるかだけで、 東京都を「トップ」にも「下位」にもできます。 どちらの棒グラフも軸は0起点・等間隔で、 数字は改竄していません。 操作しているのは分母だけです。
C3801(旅館営業施設数, 2023)は絶対数トップが東京都(4422)だが、 10万人あたりでは東京都31.4に対し 沖縄県は227.5と桁違い。 「観光地はどこか」を絶対数で語ると必ず大都市が勝つ。分母の選択は「どちらが正しい」という二択ではなく、 問いに依存します。 「医療インフラの総量・予算規模」を論じるなら絶対数が正しく、 「住民一人あたりのアクセスしやすさ」を論じるなら率が正しい。 誤解を招くグラフになるのは、 問いと分母がズレたまま提示されたときです。 実務での自衛策:
数値出典:SSDSE-B-2026(一般社団法人 統計質保証推進協会)、 2023年・47都道府県。 使用列 I510120(一般病院数)/A1101(総人口)/C3801(旅館営業施設数)。 pd.read_csv(encoding='cp932', skiprows=[1]) で読み込み、 df[df['SSDSE-B-2026']==2023] を集計した実測値。 合成・架空の数値は含みません。