コンテンツにスキップ

第14回: データストーリーテリング

資料のダウンロード

ファイル 内容
exercise.py ハンズオン演習スクリプト

ヒントの使い方

python exercise.py --hint 1            # 方向性ヒント
python exercise.py --hint 1 --level 2  # より具体的なヒント
python exercise.py --hint 1 --level 3  # コード例
python exercise.py --check             # 提出前の自己チェック

演習問題への取り組み方

  1. 下の講義ノートを読む(事前学習・2時間目安)
  2. exercise.py を実行してグラフを確認する
  3. 演習問題(5問)に取り組む
  4. python exercise.py --check で確認する
  5. exercise.py を提出する(締切は授業後1週間)

詰まったとき

# ヒントを見る
python exercise.py --hint N --level 1

# AIに質問する
python ../../ask.py "質問内容"

解決しない場合は Q&A ページの投稿フォームを使ってください。


講義ノート

1. 本日の到達目標

  • データストーリーテリングの3要素(データ・ビジュアル・ナラティブ)を説明できる
  • 起承転結の構造を使って、複数のグラフを一貫したストーリーに組み上げられる
  • 「データを見せる」と「洞察を伝える」の違いを理解し、実装に反映できる

2. データストーリーテリングの3要素

データストーリーテリングとは、データ分析の結果を「物語」として構成し、聴衆が行動を起こせる形で伝達するコミュニケーション手法です。Brent Dykes(2016)はこれを以下の3要素の重なりとして定義しました。

        データ
       /      \
     分析     説明
     /          \
  ビジュアル ── ナラティブ
       \      /
      ストーリー

2.1 データ(Data)

分析の根拠となる事実です。単独では「ただの数字」に過ぎません。

  • 適切な集計・変換が行われているか?
  • 外れ値や欠損値の扱いが明示されているか?
  • データの限界(期間・対象・精度)が説明されているか?

2.2 ビジュアル(Visuals)

データを視覚化した図表です。チャートの種類・色・注釈の選択が、メッセージの伝わりやすさを左右します。

  • グラフタイプはデータの構造に合っているか?(分布→箱ひげ、比較→棒、推移→折れ線)
  • 最も重要な1点が視覚的に強調されているか?
  • アクセシビリティ(色覚多様性・フォントサイズ)に対応しているか?

2.3 ナラティブ(Narrative)

データとビジュアルをつなぐ「語り」です。タイトル・キャプション・注釈・プレゼンの言葉が該当します。

  • 「何が起きているか」だけでなく「なぜ重要か」「何をすべきか」まで述べているか?
  • 聴衆が行動を取れる具体的な提言があるか?
  • 専門用語を使いすぎていないか?

3.「洞察を伝える」vs「データを見せる」

この違いを理解することが、データストーリーテリングの核心です。

3.1 「データを見せる」グラフ(探索的可視化)

探索的可視化は分析者自身のためのものです。目的は「データを理解する」ことで、受け手は自分自身です。

特徴: - すべての変数・カテゴリを網羅的に表示 - タイトルは「~の分布」「~vs ~」などの記述的な形式 - 特定の結論へ誘導しない - Jupyter Notebook などの分析環境で使う

3.2 「洞察を伝える」グラフ(説明的可視化)

説明的可視化は意思決定者のためのものです。目的は「行動を促す」ことで、受け手は分析結果を知らない人々です。

特徴: - 最も重要な1〜2点に絞って強調 - タイトルは「緑化率が高いほど幸福感が向上する」など、主張を含む - 注釈・矢印・色の強調で視線を誘導 - レポート・プレゼン・ダッシュボードで使う

対比の例:

項目 データを見せる 洞察を伝える
タイトル 「場所種別ごとの幸福感スコアの分布」 「公園は他の場所より幸福感が1.4点高い」
色使い 全カテゴリを異なる色で均等に表示 注目すべきカテゴリのみ強調色、他はグレー
注釈 なし 最大差・転換点・具体的な数値を注記
結論 示さない 「公園の増設が市民幸福感の向上に有効」

4. 起承転結構造とビジネスレポートへの応用

4.1 なぜ起承転結か

日本語圏の読者は「起承転結」の構造に慣れており、この流れに沿ったレポートは読み進めやすいとされています。ビジネスでは「SCQA(Situation / Complication / Question / Answer)」という類似フレームワークも広く使われます。

4.2 4パネル構成の設計

パネル 役割 グラフタイプ 問いかけ
起 問題の提示 箱ひげ図・棒グラフ 「現状はどうなっているか?」
承 原因・相関の発見 散布図・ヒートマップ 「なぜそうなっているか?」
転 複雑さ・例外・時間変化 時系列・面グラフ 「常にそうなのか? 条件はあるか?」
結 提言・行動指針 ランキング・優先度マトリクス 「では何をすべきか?」

4.3 matplotlib.gridspec での実装

from matplotlib.gridspec import GridSpec

fig = plt.figure(figsize=(18, 14))
gs = GridSpec(
    nrows=2, ncols=2,
    hspace=0.42,    # 縦方向の間隔
    wspace=0.35,    # 横方向の間隔
    left=0.07, right=0.97,
    top=0.88, bottom=0.06,
)

ax1 = fig.add_subplot(gs[0, 0])   # 左上(起)
ax2 = fig.add_subplot(gs[0, 1])   # 右上(承)
ax3 = fig.add_subplot(gs[1, 0])   # 左下(転)
ax4 = fig.add_subplot(gs[1, 1])   # 右下(結)

# 全体タイトルは fig.suptitle() または fig.text() で追加
fig.text(0.5, 0.96, "レポートのメインメッセージをここに書く",
         ha="center", fontsize=17, fontweight="bold")

4.4 タイトルに「主張」を入れるテクニック

タイトルは単なるラベルではなく、そのパネルで伝えるべき「洞察の一文」にします。

NG(記述的) OK(主張的)
「場所別幸福感スコア」 「公園の幸福感は最も高く、オフィス街の1.3倍」
「緑化率と幸福感の関係」 「緑化率が高いほど幸福感が向上する(r=0.72)」
「週次幸福感の推移」 「公園の幸福感は夏季に特に高まる」
「優先改善地点」 「駅前の高混雑地点3カ所を最優先で改善すべき」

5. 期末ダッシュボード課題 — 評価ルーブリック

5.1 課題の概要

共有データ(shared_data.py)を使い、「都市空間の幸福感向上のための政策提言」をテーマとした4〜6パネルのレポート図または対話的ダッシュボードを作成してください。

提出物: - Pythonスクリプト(.py または .ipynb) - 生成された図ファイル(.png / .html) - 200字以内の分析サマリー(テキスト)

5.2 評価ルーブリック(100点満点)

評価軸 配点 5(満点) 3(標準) 1(要改善)
ストーリー構造 25点 起承転結(または相当する構造)が明確で、各パネルが論理的につながっている 一部のパネルでストーリーの流れが不明瞭 パネルが独立していてストーリーがない
洞察の明確さ 25点 各パネルのタイトルが「主張」を含み、注釈で根拠を示している タイトルは主張的だが注釈が不足 タイトルが記述的で洞察が読み取れない
アクセシビリティ 20点 colorblind 対応パレット・形状の二重符号化・適切なフォントサイズが揃っている 一部対応しているが不完全 色覚多様性への配慮がない
データ-インク比 15点 不要な装飾がなく、データが前面に出ている 軽微な装飾はあるが許容範囲 3D・グラデーション・過剰グリッドがある
技術的正確さ 15点 スクリプトがエラーなく実行でき、統計処理が正確 軽微なエラーはあるが概ね正確 スクリプトが実行できない・統計が誤り

加点(最大10点): - 対話的可視化(Plotly / Altair)を実装している場合: +5点 - WCAG AA 基準のコントラスト比を意識した配色説明がある場合: +5点

5.3 評価の観点(採点者へのメモ)

最も重視するのは「ストーリー構造」と「洞察の明確さ」の合計50点部分です。技術的に複雑なグラフよりも、「なぜこのグラフが必要か」「このグラフは何を主張しているか」が明確なシンプルなグラフを高く評価します。


6. まとめ

キーワード 内容
データストーリーテリング データ・ビジュアル・ナラティブの3要素を組み合わせて洞察を伝えること
説明的可視化 意思決定者向けに、特定のメッセージを強調した可視化
探索的可視化 分析者自身が全体像を把握するための可視化
起承転結 問題提示→原因発見→深掘り→提言の4段構成
GridSpec matplotlib で複数パネルを柔軟に配置するためのレイアウト管理クラス
主張的タイトル 「何が」ではなく「何を伝えたいか」を一文で表したタイトル

参考文献

  • Dykes, B. (2016). Effective Data Storytelling. Wiley.
  • Knaflic, C. N. (2015). Storytelling with Data. Wiley.
  • Minto, B. (2009). The Pyramid Principle. Financial Times/Prentice Hall.
  • matplotlib 公式ドキュメント: https://matplotlib.org/stable/gallery/subplots_axes_and_figures/gridspec_multicolumn.html