論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
ゲシュタルトの法則
Gestalt Principles
可視化

🔖 キーワード索引

ゲシュタルトの法則」を取り巻く中核キーワード群です。 検索やインデックス作成で参照する際の手がかりにしてください。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になります。

ゲシュタルト知覚近接類同連続閉合図と地可視化

gestalt principles」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「gestalt principles」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。

gestalt principles統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法

これらのキーワードは「gestalt principles の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。

💡 30秒で分かる結論 — ゲシュタルトの法則

🍰 まずはやさしく

脳が図形をまとめる仕組みのことです。

見やすい図を作るために使います。

スマホのアプリ画面などで活用されています。

ここでは代表的な5つのルールを学びます。

最も忙しい読者のために、 まず結論だけまとめます。 詳細は以下のセクションへ:

📍 文脈 — どこで出会うか

🍰 まずはやさしく

図の見せ方を決めるルールです。

データの伝え方を良くするために使います。

グラフの色使いや配置に関わります。

この知識がどう役立つかを読みましょう。

棒グラフの色を全部バラバラにすると分かりにくい — それは類同の法則違反。 凡例を本体から離すと対応が取りにくい — 近接の法則違反。 知識として持っているだけで可視化の質が上がります。

このページの読み方:まず 30秒結論直感 を読み、 必要に応じて 数式計算例落とし穴 に進んでください。

🎨 直感で掴む

🍰 まずはやさしく

パズルを解くような感覚のルールです。

直感的にどう見えるかを知るために使います。

似た色の点がつながって見える例などです。

具体的にどんな見え方になるか確認します。

5 つの法則をミニ例で:

🎮 触って理解する

脳は「同じ図形の集まり」を 意識する前に自動で まとめてしまいます(前注意的処理)。 ここでは 近接・類同・共通運命 の 3 原則と、 可視化での 良い例/悪い例 をキャンバスで体感できます。 ボタンで法則を切り替え、 スライダー(またはキャンバス上を左右にドラッグ/スワイプ)で強さを変えて、 まとまりの見え方がどう変わるか観察してください。

120
近接モード:間隔を広げると同じ点でも「2 つの群」に見えます。
読み取り方:どのモードでも 点そのものは同じです。 変えているのは「間隔」「色」「動き」という 視覚変数だけ。 それでも脳は勝手にグループを作ります — これが可視化を設計する側の「てこ(leverage)」になります。 逆に 意図せずこの効果が働くと、 関係のない点が同じ群に見える 誤読が生まれます。

🧠 直感・落とし穴・発展

直感: グルーピングは 努力ゼロで起こります。 前注意的処理(preattentive processing)と呼ばれ、 色・位置・動きといった一部の視覚変数は、 視線を向ける前に約 200ms 以内で並列に処理されます。 だから「近い=仲間」「同色=仲間」「同じ動き=仲間」は、 説明しなくても伝わる最強のチャネルです。

落とし穴:凡例と図の乖離 — 凡例を本体から離すと近接の法則が切れ、 色と意味の対応を毎回目で往復させることになります。 ②意図しないグルーピング — 等間隔のはずが微妙な隙間で「別グループ」に見える、 系列色が近すぎて別カテゴリが同一に見える。 ③過剰装飾 — 影・グラデ・枠を足すほど「図と地」が乱れ、 本当に見せたい前景が背景に沈みます。 強調は 1 画面 1 メッセージに絞るのが原則です。

発展: 視覚変数には 優先順位があります(位置 > 色相・動き > サイズ > 形)。 最重要の差は「位置(近接)」で、 次点が「色相・動き(類同・共通運命)」。 形はグルーピングには弱いので単独で頼らないこと。 アクセシビリティ面では、 色だけに依存すると色覚特性のある読者に伝わらないため、 色+位置色+形+直接ラベルで冗長化します。 共通運命(動き)は目を引く反面、 前庭感覚への負荷や自動再生の停止手段(本デモの再生/停止)への配慮が必要です。

関連ページ: データ可視化インタラクティブ可視化散布図視覚属性

📐 数式を言葉で読み解く(詳細版)

🍰 まずはやさしく

知覚(感じ方)を数式にしたものです。

グループに見える確率を計算するために使います。

点と点の距離や色の似具合で考えます。

記号の意味と計算の仕組みを詳しく読みます。

$$P(\text{group}\,|\,x_i,x_j) \;=\; \sigma\!\bigl(\alpha\, d(x_i,x_j) + \beta\, s(x_i,x_j) + \gamma\, c(x_i,x_j) + \delta\bigr)$$

2 つの要素 $x_i, x_j$ が同じ「群」に知覚される確率 $P$ は、 距離 $d$(近接)・形状や色の類似度 $s$(類同)・連続性 $c$ の線形結合に対し sigmoid 関数 $\sigma$ を適用したロジスティック心理物理モデルで近似できる。 係数 $\alpha,\beta,\gamma$ の符号は 距離が大きくなるとグループ知覚が下がる(負の係数)・類似度が高いとグループ知覚が上がる(正の係数)と一貫している。 Palmer (1992) や Quinlan & Wilton (1998) の心理物理実験で実測値が報告されている。

📖 記号と意味の対応表(拡張版)

記号意味SSDSE-B-2026 での具体例
d(x_i,x_j)2 点間のユークリッド距離(近接の原則)人口散布図で東京(1409 万)と大阪(882 万)の x 軸距離
s(x_i,x_j)色・形・サイズの類似度(類同の原則)関東 7 県を #1E88E5、関西 7 県を #E53935 で塗り分け
c(x_i,x_j)連続性(線が滑らかに繋がる)時系列折れ線で出生数推移を 1 本に
$P$同一グループと知覚される確率「東京と神奈川は近い県」と感じる被験者割合
$\sigma$シグモイド関数(心理物理 S 字)距離 50 px 以下で急激にグループ知覚が立ち上がる
$\alpha,\beta,\gamma$各原則の影響度(実験で推定)α≈-0.04, β≈+1.2, γ≈+0.8(Quinlan, 1998)
$\delta$バイアス項(被験者の閾値)個人差を吸収する切片

🧭 直感的な理解(詳細)

47 都道府県の人口を散布図にプロットする場面を考えます。 何も加工しないと点が 47 個ばらばらに見えますが、 東日本=青・西日本=赤 と色分けする(類同)と「東西で人口傾向が違う」が即座に読み取れます。 さらに 関東 7 県を点線で囲む(閉合)と「首都圏は別格」というメッセージが浮かび上がります。 ここで重要なのは、 線を実際に描かなくても「閉じた領域」として知覚させられる点です。 これがゲシュタルトの法則をデータ可視化に応用する典型例です。

さらに、 関東 7 県の点を 同じサイズ・同じ形(円) で揃え、 関西 7 県を 三角形 で表すと、 色覚に頼らずとも類同が成立します。 これは色覚多様性 (CUD) 配慮の基本テクニックです。 すなわちゲシュタルトの法則は「視覚チャネル × 原則」の組み合わせで多重符号化を作る理論的基盤になります。

🐍 Python 実装 #1(散布図に類同+近接を適用)

🎯 このコードでやること:SSDSE-B-2026 から 47 都道府県の人口(A1101)と出生数(A4101)を読み込み、 「近接・類同・図と地」の 3 原則を散布図に適用する。

📥 入力データ:pandas DataFrame, 47 行 × (Prefecture, A1101=人口総数, A4101=出生数, region=地方区分) の 4 列。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101','A4101']].copy()
d23.columns = ['name','population','births']

region_map = {
    '北海道':'北海道','青森県':'東北','岩手県':'東北','宮城県':'東北','秋田県':'東北','山形県':'東北','福島県':'東北',
    '茨城県':'関東','栃木県':'関東','群馬県':'関東','埼玉県':'関東','千葉県':'関東','東京都':'関東','神奈川県':'関東',
    '新潟県':'中部','富山県':'中部','石川県':'中部','福井県':'中部','山梨県':'中部','長野県':'中部',
    '岐阜県':'中部','静岡県':'中部','愛知県':'中部',
    '三重県':'関西','滋賀県':'関西','京都府':'関西','大阪府':'関西','兵庫県':'関西','奈良県':'関西','和歌山県':'関西',
    '鳥取県':'中国','島根県':'中国','岡山県':'中国','広島県':'中国','山口県':'中国',
    '徳島県':'四国','香川県':'四国','愛媛県':'四国','高知県':'四国',
    '福岡県':'九州','佐賀県':'九州','長崎県':'九州','熊本県':'九州','大分県':'九州','宮崎県':'九州','鹿児島県':'九州','沖縄県':'九州'
}
d23['region'] = d23['name'].map(region_map)

colors = {'北海道':'#90A4AE','東北':'#26A69A','関東':'#1E88E5','中部':'#FB8C00',
          '関西':'#E53935','中国':'#8E24AA','四国':'#FDD835','九州':'#43A047'}

fig, ax = plt.subplots(figsize=(9,6))
for region, group in d23.groupby('region'):
    ax.scatter(group['population']/1e4, group['births']/1e3,
               s=120, c=colors[region], label=region, alpha=0.85, edgecolor='white')
ax.set_xlabel('人口(万人)'); ax.set_ylabel('出生数(千人)')
ax.set_title('ゲシュタルト「類同」の応用:地方ごとに色分けした 47 都道府県')
ax.legend(loc='upper left', fontsize=10)
plt.tight_layout(); plt.savefig('gestalt_region_scatter.png', dpi=130)
print('プロット完了:47 点を 8 地方の色で塗り分け')
print(d23.groupby('region')['population'].agg(['count','sum','mean']).round(0))

📤 実行結果

プロット完了:47 点を 8 地方の色で塗り分け count sum mean region 中国 5 7070000 1414000.0 中部 9 20749000 2305444.0 九州 8 14029000 1753625.0 北海道 1 5092000 5092000.0 四国 4 3578000 894500.0 東北 6 8318000 1386333.0 関東 7 43527000 6218143.0 関西 7 21990000 3141429.0

💬 結果の読み方:関東 7 県の合計人口は 4353 万人で、 1 県あたり平均 622 万人と他地方の 2-7 倍。 散布図では青い「関東群」が右上に固まり、 ゲシュタルトの 類同(色)+近接(位置) によって「関東は別格」というメッセージが視覚的に伝わる。

🐍 Python 実装 #2(閉合の原則:凸包で囲む)

🎯 このコードでやること:scipy の凸包 (ConvexHull) を使って関東 7 県を点線で囲み、 ゲシュタルトの「閉合」原則を散布図に明示する。

📥 入力データ:上の d23。 関東 7 県 (茨城・栃木・群馬・埼玉・千葉・東京・神奈川) の人口と出生数。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas as pd, numpy as np, matplotlib.pyplot as plt
from scipy.spatial import ConvexHull

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101','A4101']].copy()
d23.columns = ['name','population','births']
kanto = ['茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県']
k = d23[d23['name'].isin(kanto)].copy()
pts = np.column_stack([k['population']/1e4, k['births']/1e3])
hull = ConvexHull(pts)

fig, ax = plt.subplots(figsize=(9,6))
ax.scatter(d23['population']/1e4, d23['births']/1e3, s=60, c='#CFD8DC', alpha=0.8, label='その他 40 県')
ax.scatter(k['population']/1e4, k['births']/1e3, s=120, c='#1E88E5', label='関東 7 県', edgecolor='white')
# 閉合(点線囲み)
for simplex in hull.simplices:
    ax.plot(pts[simplex,0], pts[simplex,1], 'k--', alpha=0.5)
ax.set_xlabel('人口(万人)'); ax.set_ylabel('出生数(千人)')
ax.set_title('ゲシュタルト「閉合」の応用:関東 7 県を凸包で明示')
ax.legend(); plt.tight_layout(); plt.savefig('gestalt_closure.png', dpi=130)
print(f'関東 7 県の人口合計: {k["population"].sum():,} 人')
print(f'全国に占める割合: {k["population"].sum()/d23["population"].sum()*100:.1f}%')
print(f'凸包の頂点数: {len(hull.vertices)}')

📤 実行結果

関東 7 県の人口合計: 43,527,000 人 全国に占める割合: 35.0% 凸包の頂点数: 6

💬 結果の読み方:関東 7 県で全国 35.0% の人口を占める。 6 頂点の凸包で囲むだけで「ここがクラスタ」と視覚的に閉合され、 残り 40 県との対比が強調される。 7 県のうち 6 県が頂点になった(=内側に入ったのは 1 県だけ)ということは、 関東 7 県が人口と出生数の平面上でひとかたまりに固まっているのではなく、 平面上に大きく散らばって分布していることを意味する。 それでも囲み線を引くだけで「同じグループ」に見えるのが、 閉合 (closure) の効果である。

🐍 Python 実装 #3(連続の原則:折れ線で時系列)

🎯 このコードでやること:東京都・大阪府・愛知県・北海道の人口を年次(SSDSE-B-2026 の年列)で折れ線にし、 「連続」の原則を時系列に適用する。

📥 入力データ:SSDSE-B-2026 全年・4 都道府県の人口 (A1101)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd, matplotlib.pyplot as plt

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
target = ['東京都','大阪府','愛知県','北海道']
sub = df[df['Prefecture'].isin(target)][['SSDSE-B-2026','Prefecture','A1101']].copy()
sub.columns = ['year','name','pop']
pivot = sub.pivot(index='year', columns='name', values='pop')

fig, ax = plt.subplots(figsize=(9,5))
colors = {'東京都':'#E53935','大阪府':'#1E88E5','愛知県':'#43A047','北海道':'#FB8C00'}
for col in pivot.columns:
    ax.plot(pivot.index, pivot[col]/1e4, marker='o', linewidth=2.5,
            color=colors[col], label=col)
ax.set_xlabel('年'); ax.set_ylabel('人口(万人)')
ax.set_title('ゲシュタルト「連続」:4 大都府県の人口推移')
ax.legend(); ax.grid(alpha=0.3); plt.tight_layout()
plt.savefig('gestalt_continuity.png', dpi=130)
print(pivot.tail(5))

📤 実行結果

name 北海道 大阪府 愛知県 東京都 year 2019 5259000 8842000 7557000 14007000 2020 5224614 8837685 7542415 14047594 2021 5183000 8806000 7517000 14010000 2022 5140000 8782000 7495000 14038000 2023 5092000 8763000 7477000 14086000

💬 結果の読み方:折れ線を 1 本に繋ぐと「連続」原則で時間の流れが読み取れる。 東京だけが微増を維持し、 他 3 都府県は減少傾向。 色 (類同) と線 (連続) の 2 重符号化で識別性が高い。

🐍 Python 実装 #4(図と地:背景白で KPI 強調)

🎯 このコードでやること:47 都道府県の人口総数から「東京・大阪・愛知」だけを赤、 他を薄灰でハイライト。 図と地の原則を実装する。

📥 入力データ:上の d23 DataFrame の人口列。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd, matplotlib.pyplot as plt

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101']].copy()
d23.columns = ['name','pop']
d23 = d23.sort_values('pop', ascending=False).reset_index(drop=True)

highlight = ['東京都','神奈川県','大阪府']
colors = ['#E53935' if n in highlight else '#CFD8DC' for n in d23['name']]

fig, ax = plt.subplots(figsize=(11,6))
ax.bar(range(len(d23)), d23['pop']/1e4, color=colors, edgecolor='white')
ax.set_xticks(range(len(d23))); ax.set_xticklabels(d23['name'], rotation=90, fontsize=9)
ax.set_ylabel('人口(万人)')
ax.set_title('ゲシュタルト「図と地」:上位 3 都府県のみ強調')
plt.tight_layout(); plt.savefig('gestalt_figure_ground.png', dpi=130)
print('上位 3 強調 (図):'); print(d23.head(3))
print(f'残り 44 県の平均: {d23.iloc[3:]["pop"].mean():,.0f}')

📤 実行結果

上位 3 強調 (図): name pop 0 東京都 14086000 1 神奈川県 9229000 2 大阪府 8763000 残り 44 県の平均: 2,097,159

💬 結果の読み方:上位 3 都府県(赤)が瞬時に「図」として浮かび、 残り 44 県(灰)が「地」に沈む。 平均 210 万人と東京 1409 万人の差は約 6.7 倍。 配色だけでメッセージが伝わる。

🏭 産業界活用事例(6 件)

業界活用シーン適用された原則と効果
UI / UXGoogle マテリアルデザインの「カード UI」関連情報を 1 枚のカードに 共通領域 として配置。 クリック率が 18% 向上したという A/B テスト結果あり。
広告FedEx ロゴの矢印(E と x の間)図と地の反転。 矢印は背景の隙間に潜んでいるが、 見えた瞬間「スピード感」を脳に印象づける。
ダッシュボードTableau / Power BI の KPI カードレイアウト関連 KPI を 近接に配置し、 区切り線で 閉合させる。 目線移動が 30% 短縮(Few, 2012)。
医療画像CT スキャンの病変ハイライト病変を赤、 正常組織を青で塗り分け(類同)、 病変の輪郭を線で閉じる(閉合)。 診断時間が 22% 短縮。
交通東京メトロ路線図同じ路線を 1 本の連続した曲線で描く(連続)。 駅名は近接で路線にひも付き、 色分け(類同)で 13 路線を識別可能。
EC サイトAmazon の商品カードグリッド「あなたへのおすすめ」を 近接で 1 ブロックに、 セール品は赤帯で 類同。 平均滞在時間 +14%。

📊 関連手法・原則の比較表

原則主目的適用例注意点
近接 (Proximity)関連要素のグルーピングフォームの「氏名・住所・電話」を 1 ブロックに余白の取りすぎは逆効果
類同 (Similarity)同種要素の区別色や形で分類を表現色覚多様性配慮(CUD)必須
連続 (Continuity)流れの提示折れ線グラフ、 矢印フロー時系列の方向 (LTR) を守る
閉合 (Closure)境界の暗示点線で囲むだけでグループ化線を多用すると煩雑
図と地 (Figure/Ground)前景の強調主要 KPI を背景より明るくコントラスト比 4.5:1 以上推奨
共通運命 (Common Fate)動きで群を作るアニメーション同期過剰アニメは認知負荷
共通領域 (Common Region)背景色で群を作る同じ背景の中の要素を 1 群とする背景の彩度が強すぎると主役を食う
結合 (Connectedness)線で繋いで関係を示すネットワーク図、 系統樹交差線を最小化する設計が必要

❌ 失敗例(アンチパターン 8 件)

  1. 近接の濫用:47 都道府県を全て同じ間隔で並べ「地方ごとのまとまり」が消失。 → 地方ブロックごとに余白を入れる。
  2. 類同の無視:男女両方の人口を同じ青色で表示し区別不可。 → 男性 #1E88E5、 女性 #E53935 等で塗り分ける。
  3. 連続の破壊:時系列折れ線で年を欠落させジグザグに。 → 欠損年は破線で明示、 値補間しない。
  4. 閉合の過剰:ダッシュボード全 KPI を細枠で囲み迷路化。 → 重要 3 群だけ枠線、 他は余白で区切る。
  5. 図と地の反転:背景に高彩度パターン、 グラフが沈んで読めない。 → 背景は #FAFAFA など低彩度に。
  6. 共通運命の暴走:全要素を派手に動かして焦点喪失。 → 動かすのは強調したい要素だけ。
  7. 共通領域の彩度過剰:背景色が主役より目立つ。 → 背景は不透明度 0.2 以下で。
  8. 結合の交差:ネットワーク図で線が縦横無尽に交差。 → force-directed レイアウトや階層配置で交差を最小化。

📝 演習問題(5 問)

  1. 問 1:SSDSE-B-2026 の 47 都道府県人口(A1101)を 関東 / 関西 / その他の 3 群で散布図色分けせよ。 適用される原則は? 答え:類同(色)と近接(地理的位置)の併用。
  2. 問 2:出生数(A4101)と死亡数(A4200)の比率を全国 47 都道府県で折れ線にする際、 「連続の原則」が成り立つ条件を述べよ。 答え:年次が単調増加でソートされ、 欠損が無いこと。
  3. 問 3:高齢化率の都道府県別棒グラフで 40% 以上を赤、 25% 未満を青とした。 この配色が破る恐れのある原則を答えよ。 答え:色覚多様性 (CUD)。 赤緑型より「黄/紫」配色が安全。
  4. 問 4:東京の人口 1409 万を強調するため周囲に 20 px の余白を取った。 これに該当する原則は? 答え:図と地の分離。
  5. 問 5:47 都道府県をクラスタリングし、 同クラスタを点線で囲む可視化を作る。 どの 2 原則を使うか? 答え:類同(色)+閉合(点線)。

📚 関連用語辞典(10 語)

用語短い定義
データ可視化数値を視覚要素に変換するプロセス全般。
カラーユニバーサルデザイン色覚特性に配慮した配色設計(CUD)。
ダッシュボードKPI 群を一画面で監視する UI。
ヒートマップ2 次元行列を色で表現する図表。
散布図2 変数の関係を点で表す可視化。
棒グラフ量的比較に最も使われる図。
折れ線グラフ時系列の連続変化を表す図。
前注意的属性200 ms 以内に検出される視覚属性。
視覚符号化データから視覚チャネルへの写像。
情報デザイン情報を構造化して伝える設計学。

📖 参考文献

🍳 50 連発レシピ(matplotlib でゲシュタルト原則を試す)

🎯 このコードでやること:SSDSE-B-2026 の 47 都道府県データから 50 通りのプロット設定を一括生成し、 各原則の効果を視覚比較する。

📥 入力データ:上で読み込んだ d23 DataFrame (47 行 × 4 列)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101','A4101','A4200']].copy()
d23.columns = ['name','pop','birth','death']

recipes = [
  ('R01 近接:地方ブロック', dict(layout='region_block')),
  ('R02 類同:8 色塗り', dict(palette='region8')),
  ('R03 類同:男女 2 色', dict(palette='gender')),
  ('R04 連続:折れ線(年次)', dict(kind='line')),
  ('R05 閉合:点線囲み(首都圏)', dict(close='kanto')),
  ('R06 図と地:低彩度背景', dict(bg='#FAFAFA')),
  ('R07 共通運命:アニメ同期', dict(anim=True)),
  ('R08 サイズ類同:人口で半径', dict(size_by='pop')),
  ('R09 余白で近接強化', dict(margin='wide')),
  ('R10 凡例の閉合', dict(legend_box=True)),
  ('R11 連続曲線(spline)', dict(spline=True)),
  ('R12 区切り線(subplots)', dict(grid=True)),
  ('R13 図地:白文字 on 黒', dict(theme='dark')),
  ('R14 グルーピング点線', dict(close='kanto+kinki')),
  ('R15 矢印で連続', dict(arrow=True)),
  ('R16 KPI カード化', dict(card=True)),
  ('R17 ヒートマップで類同', dict(kind='heatmap')),
  ('R18 凡例位置上', dict(legend_loc='upper')),
  ('R19 凡例位置右', dict(legend_loc='right')),
  ('R20 余白 dpi=200', dict(dpi=200)),
  ('R21 透明度で図地', dict(alpha=0.5)),
  ('R22 マーカー形類同', dict(marker_by='region')),
  ('R23 注釈で図', dict(annotate='Tokyo')),
  ('R24 ラベル近接', dict(label_close=True)),
  ('R25 グリッド薄く', dict(grid_alpha=0.2)),
  ('R26 軸の連続', dict(sharex=True)),
  ('R27 配色 CUD 対応', dict(palette='cud')),
  ('R28 連続色(gradient)', dict(palette='gradient')),
  ('R29 棒の閉合', dict(bar_edge=True)),
  ('R30 棒の類同(色固定)', dict(bar_color='#00897B')),
  ('R31 棒の近接(grouped)', dict(bar_group=True)),
  ('R32 棒の図地(背景白)', dict(bg='white')),
  ('R33 ツリーマップで近接', dict(kind='treemap')),
  ('R34 ベン図で閉合', dict(kind='venn')),
  ('R35 円グラフで類同', dict(kind='pie')),
  ('R36 マップで近接', dict(kind='choropleth')),
  ('R37 サンキーで連続', dict(kind='sankey')),
  ('R38 ネットワーク図', dict(kind='network')),
  ('R39 凡例非表示', dict(legend=False)),
  ('R40 ラベル省略', dict(label='abbr')),
  ('R41 注釈矢印', dict(annotate_arrow=True)),
  ('R42 ファセット格子', dict(facet=True)),
  ('R43 マルチアクシス', dict(secondary_y=True)),
  ('R44 ハッチング類同', dict(hatch=True)),
  ('R45 線種で類同', dict(linestyle_by='region')),
  ('R46 グリッド線色', dict(grid_color='#ECEFF1')),
  ('R47 タイトル中央', dict(title_align='center')),
  ('R48 サブタイトル付与', dict(subtitle=True)),
  ('R49 出典クレジット', dict(credit='SSDSE-B-2026')),
  ('R50 余白 tight_layout', dict(layout='tight')),
]
print(f'用意したレシピ数: {len(recipes)}')
print('代表 5 件:')
for r in recipes[:5]: print(' ', r[0])
print(f'47 都道府県の人口合計: {d23["pop"].sum():,} 人')
print(f'平均: {d23["pop"].mean():,.0f} 人 / 最大: {d23["pop"].max():,} 人 (東京)')

📤 実行結果

用意したレシピ数: 50 代表 5 件: R01 近接:地方ブロック R02 類同:8 色塗り R03 類同:男女 2 色 R04 連続:折れ線(年次) R05 閉合:点線囲み(首都圏) 47 都道府県の人口合計: 124,353,000 人 平均: 2,645,809 人 / 最大: 14,086,000 人 (東京)

💬 結果の読み方:50 レシピは 6 原則を網羅。 全 47 都道府県人口 1.244 億は 2023 年の実推計人口と一致(SSDSE-B-2026 の 47 県合計)。

❓ FAQ(20 問)

Q1. ゲシュタルトの法則は何個ある?
古典的には 6 原則 (近接・類同・連続・閉合・図と地・共通運命)。 Palmer (1992) の Common Region と Connectedness を含めて 8 とする教科書もある。
Q2. プレグナンツの法則とは?
「最も簡潔・規則的・対称的に知覚される」というメタ原則。 6 原則の上位に位置する。
Q3. データ可視化での最重要原則は?
多くの研究で 近接類同の組み合わせが効果最大とされる。
Q4. 色覚多様性 (CUD) との関係は?
類同を「色」だけに頼ると CUD 配慮できない。 形・大きさも併用する。
Q5. SSDSE-B-2026 の地方分類はどこで決める?
標準的な総務省地方区分 8 区を使う(北海道・東北・関東・中部・関西・中国・四国・九州)。
Q6. 散布図で点が重なる場合の解決策は?
透明度(alpha=0.5)と「ジッタリング」(小さなノイズで位置をずらす)。 図と地の原則を保ちつつ重なりを解消できる。
Q7. ダッシュボード設計の鉄則は?
F 字 / Z 字パターンに沿って重要 KPI を左上に置き、 関連項目は近接配置。
Q8. 棒グラフは何本まで?
横棒なら 20 本以内、 縦棒なら 12 本以内が認知限界(Few, 2012)。 47 都道府県は地方別にファセットすると見やすい。
Q9. アニメーションは効果的?
共通運命の原則で群を作れるが、 過剰は認知負荷。 0.3-0.5 秒の遷移が推奨。
Q10. 図と地の最小コントラスト比は?
WCAG 2.1 で 4.5:1(通常テキスト)、 3:1(大テキスト)以上。
Q11. プレゼンスライドへの応用は?
箇条書きを意味で 3-4 群に分け、 群内は近接、 群間は余白。 各群を 1 色(類同)。
Q12. プロトタイピングツールは?
Figma、 Adobe XD、 Sketch。 共通領域・スマートガイドで近接・類同を素早くチェック。
Q13. Tufte の Data-Ink ratio との関係は?
Data-Ink 最大化 = 図と地の最適化。 余分な装飾は地、 データは図。
Q14. 47 都道府県マップ(コロプレス)でのコツは?
連続色マップ(YlOrRd 等)で類同、 県境で閉合、 地方区分の太枠で近接強化。
Q15. ヒートマップで気を付けることは?
行 / 列の並び順が認知に大きく影響。 クラスタリング順に並べると類同が強化される。
Q16. 凡例の最適位置は?
視線移動が最小になる箇所(多くは右上)。 凡例内で類同(色)を再現。
Q17. インフォグラフィックでの応用は?
アイコン形状で類同、 矢印で連続、 枠で閉合。 視線誘導を明示化。
Q18. 高齢化率を表示する時の注意は?
赤一色で塗ると「危険」印象が強すぎる。 30% 前後を黄、 40% を橙、 50% を赤と段階分け。
Q19. 視覚障害支援は?
ALT テキスト・色以外の符号化(形/パターン)・スクリーンリーダー対応。
Q20. ゲシュタルトの法則は AI 画像認識にも使える?
CNN の特徴マップは類同・近接を学習している。 解釈にもゲシュタルトが援用される。

🔁 補遺:ゲシュタルト × Python 可視化のベストプラクティス 30

以下は SSDSE-B-2026 の 47 都道府県データを matplotlib / seaborn / plotly で可視化する際の経験則です。 すべて 「どの原則を活かすか」 を明示しています。

#プラクティス適用原則SSDSE-B-2026 での例
1背景を #FAFAFA に図と地人口棒グラフで上位 3 県を赤、 他を灰
2凡例を 1 行 4 列以下に近接地方区分 8 ラベルを 2 行 4 列
3同カテゴリは同色類同関東 7 県を常に青系で固定
4折れ線は markevery 設定連続5 年ごとにマーカー
5境界線は破線 (--)閉合関東 7 県を凸包で囲む
6subplots で余白共有近接男女別人口を上下 subplot
7タイトルは左寄せ連続読み始めの方向 (LTR) に揃える
8グリッド線は薄く図と地alpha=0.2 で背景に沈める
9マーカーサイズで重要度類同東京を s=300、 他を s=80
10注釈はデータ近傍に近接東京の点の直上にラベル
11facet_grid で類同強化類同地方ごとに同じ y 軸スケール
12色覚 CUD: viridis類同高齢化率連続色
13棒は同じ色(強調行のみ違う)図と地人口バーで東京だけ赤
14枠線で群を囲う閉合関東 7 県枠
15x 軸ラベル傾き 45°連続47 県名の連続提示
16高解像度出力 (dpi=200)図と地プレゼン用 PNG
17凡例の枠線閉合legend(frameon=True)
18折れ線太さで重要度類同東京 lw=3、 他 lw=1.5
19マーカーで線種補完類同CUD 配慮の二重符号
20タイトルとサブタイトル近接2 行近接配置
21出典クレジット右下図と地SSDSE-B-2026 注記
22主要数値を大きく図と地KPI カード 24pt
23凡例の順序を意味順に連続人口降順で関東→九州
24透明度で重なり可視化図と地alpha=0.6 で 47 点
25注釈矢印は控えめ図と地arrow alpha=0.5
26不要なスパインを消す図と地上下スパインを off
27余白を 0.05 以上近接subplots_adjust
28時系列は左→右連続年が増える方向に
29アクセント色は 1 色だけ図と地東京の赤 1 色のみ
30タイトルにメッセージ図と地「東京は全国の 11%」

🧪 補遺:地方区分ごとの統計サマリー(SSDSE-B-2026 2023 年実値)

地方県数人口合計 (人)人口平均最大県最小県
北海道15,092,0005,092,000北海道北海道
東北68,318,0001,386,333宮城県秋田県
関東743,527,0006,218,143東京都栃木県
中部920,749,0002,305,444愛知県福井県
関西721,990,0003,141,429大阪府和歌山県
中国57,070,0001,414,000広島県鳥取県
四国43,578,000894,500愛媛県高知県
九州814,029,0001,753,625福岡県佐賀県

この表をダッシュボードに置く際は、 関東の行を太字(図と地)、 地方区分は同じ色(類同)、 各行のセル間隔を均等(近接)にして読みやすくする。 上記 30 のベストプラクティスのうち #1, #3, #11, #13, #29 に該当する。

🔬 記号・要素の読み解き

近接 (Proximity)
物理的に近い要素を同じ群と認識。 凡例とグラフを近づける、 関連メニューを近接配置。
類同 (Similarity)
形・色・大きさが似た要素を同群と認識。 同カテゴリを同色に統一。
連続 (Continuity)
滑らかな線として続くものを 1 つの形と認識。 折れ線グラフが「線」として読める所以。
閉合 (Closure)
不完全な図形を完全な形として補完。 半円の連続を円群として知覚。
図と地 (Figure-Ground)
注目すべき前景と背景の区別。 強調したい部分を濃色で。
共通運命 (Common Fate)
同じ方向に動く要素を同群と認識。 アニメーションで強調可能。

🧮 実値で計算してみる

都道府県散布図の改善例:

問題原因改善(法則)
凡例が遠い近接違反グラフ脇に直接ラベル
同地域で色バラバラ類同違反地域で色統一
背景がうるさい図と地違反グリッドを薄く

🧮 数式に値を入れて手で計算する: 近接の原理 (距離クラスタリング)

合成 1D 点に近接で群化を計算する。

Step 1: 点の位置

x = [1, 2, 3, 10, 11, 12, 20, 21] 近接閾値 d=2

Step 2: 群化

隣接差: [1, 1, 7, 1, 1, 8, 1] 差 ≤ 2 で連結: 群1: [1,2,3] 群2: [10,11,12] 群3: [20,21] 3 群

🐍 Python で再現

1
2
3
4
5
6
7
import numpy as np
x = np.array([1, 2, 3, 10, 11, 12, 20, 21])
gaps = np.diff(x)
breaks = np.where(gaps > 2)[0]
n_groups = len(breaks) + 1
print(f"間隔: {gaps}")
print(f"群数: {n_groups}")

📤 実行結果

間隔: [1 1 7 1 1 8 1] 群数: 3

💬 手計算 (Step 2) 3 群と Python 出力が完全一致。

🐍 Python での扱い

最小再現コード。 SSDSE-B のような実データを前提に、 4〜8 行で動く例です:

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 SSDSE-B-2026(年度) A1303(65歳以上人口) A1101(総人口) A4103(合計特殊出生率) 北海道 2,023 1,681,000 5,092,000 1.06 東京都 2,023 3,205,000 14,086,000 0.99 沖縄県 2,023 350,000 1,468,000 1.6 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import matplotlib.pyplot as plt, pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', skiprows=1, encoding='cp932')
df = df[df['年度'] == 2023].reset_index(drop=True)
# '地域' という列は SSDSE-B-2026 に無いので、地域コードから作る
def _region(code):
    n = int(str(code).lstrip('R')) // 1000
    if n == 1: return '北海道'
    if n <= 7: return '東北'
    if n <= 14: return '関東'
    if n <= 23: return '中部'
    if n <= 30: return '近畿'
    if n <= 35: return '中国'
    if n <= 39: return '四国'
    return '九州沖縄'
df['地域'] = df['地域コード'].apply(_region)
df['高齢化率'] = df['65歳以上人口'] / df['総人口'] * 100   # これも派生列
# 類同: 地域で色統一
regions = df['地域'].unique()
colors = plt.cm.tab10(range(len(regions)))
for r, c in zip(regions, colors):
    sub = df[df['地域']==r]
    plt.scatter(sub['高齢化率'], sub['合計特殊出生率'], c=[c], label=r)
plt.legend(loc='best')  # 近接: グラフ内に凡例
plt.savefig('correlation_gestalt.png')

補足:ライブラリのバージョンや前処理状態によって出力は変わります。 自分の環境で動かすときは pip list でバージョンを確認し、 入力 CSV のパス・列名を実態に合わせてください。

🐍 Python 実装 #5(共通領域:背景帯で群を作る)

🎯 このコードでやること:地方ごとに axvspan で背景帯を引き、 共通領域 (Common Region) で群を作る棒グラフを描く。

📥 入力データ:47 都道府県を地方順に並べた人口データ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101']].copy()
d23.columns = ['name','pop']

# 地方順に並べる(北海道→九州)
order_by_region = [
    ('北海道',['北海道'],'#E0E0E0'),
    ('東北',['青森県','岩手県','宮城県','秋田県','山形県','福島県'],'#B2DFDB'),
    ('関東',['茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県'],'#BBDEFB'),
    ('中部',['新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県'],'#FFE0B2'),
    ('関西',['三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県'],'#FFCDD2'),
    ('中国',['鳥取県','島根県','岡山県','広島県','山口県'],'#E1BEE7'),
    ('四国',['徳島県','香川県','愛媛県','高知県'],'#FFF9C4'),
    ('九州',['福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県'],'#C8E6C9'),
]
names_ordered = [n for _,ns,_ in order_by_region for n in ns]
d23 = d23.set_index('name').loc[names_ordered].reset_index()

fig, ax = plt.subplots(figsize=(13,5))
ax.bar(range(len(d23)), d23['pop']/1e4, color='#37474F')
# 共通領域(背景帯)
x = 0
for reg, ns, color in order_by_region:
    ax.axvspan(x-0.5, x+len(ns)-0.5, color=color, alpha=0.5, zorder=0)
    ax.text(x+len(ns)/2-0.5, ax.get_ylim()[1]*1.02, reg,
            ha='center', fontsize=11, fontweight='bold', color='#37474F')
    x += len(ns)
ax.set_xticks(range(len(d23))); ax.set_xticklabels(d23['name'], rotation=90, fontsize=8)
ax.set_ylabel('人口(万人)')
ax.set_title('ゲシュタルト「共通領域」:背景色で 8 地方をグルーピング')
plt.tight_layout(); plt.savefig('gestalt_common_region.png', dpi=130)
print('共通領域 8 帯を描画。 47 県を地方順にグループ化')
print(d23[['name','pop']].head(7))

📤 実行結果

共通領域 8 帯を描画。 47 県を地方順にグループ化 name pop 0 北海道 5092000 1 青森県 1184000 2 岩手県 1163000 3 宮城県 2264000 4 秋田県 914000 5 山形県 1026000 6 福島県 1767000

💬 結果の読み方:背景帯(共通領域)で 8 地方を視覚的に区切ると、 棒の色を変えなくても群が明確になる。 関東帯の青背景上に並ぶ 7 県が「ひとまとまり」と知覚される。

🐍 Python 実装 #6(CUD 配慮:形と色を併用)

🎯 このコードでやること:色覚多様性 (CUD) に配慮し、 関東=青円・関西=赤三角・その他=灰四角と 形 × 色 の二重符号化を行う。

📥 入力データ:47 都道府県の人口(A1101)と高齢化率を計算するための高齢者数(A1303)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101','A1303']].copy()
d23.columns = ['name','pop','elderly']
d23['rate'] = d23['elderly']/d23['pop']*100

kanto = ['茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県']
kansai = ['三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県']

fig, ax = plt.subplots(figsize=(9,6))
for _, r in d23.iterrows():
    if r['name'] in kanto:
        ax.scatter(r['pop']/1e4, r['rate'], marker='o', s=150, c='#1E88E5', edgecolor='white', zorder=3)
    elif r['name'] in kansai:
        ax.scatter(r['pop']/1e4, r['rate'], marker='^', s=180, c='#E53935', edgecolor='white', zorder=3)
    else:
        ax.scatter(r['pop']/1e4, r['rate'], marker='s', s=80, c='#90A4AE', alpha=0.7, zorder=2)
ax.set_xlabel('人口(万人)'); ax.set_ylabel('高齢化率 (%)')
ax.set_title('ゲシュタルト「類同 × 形」:CUD 配慮の二重符号化')
ax.scatter([],[], marker='o', s=150, c='#1E88E5', label='関東(円)')
ax.scatter([],[], marker='^', s=180, c='#E53935', label='関西(三角)')
ax.scatter([],[], marker='s', s=80, c='#90A4AE', label='その他(四角)')
ax.legend(); plt.tight_layout(); plt.savefig('gestalt_cud.png', dpi=130)
print(f'関東平均高齢化率: {d23[d23["name"].isin(kanto)]["rate"].mean():.1f}%')
print(f'関西平均高齢化率: {d23[d23["name"].isin(kansai)]["rate"].mean():.1f}%')
print(f'全国平均高齢化率: {d23["rate"].mean():.1f}%')

📤 実行結果

関東平均高齢化率: 28.0% 関西平均高齢化率: 30.3% 全国平均高齢化率: 31.6%

💬 結果の読み方:関東は若年層流入で高齢化率が全国平均より 3.6 pt 低い。 形と色の併用なら、 印刷モノクロでも 3 群が識別可能で CUD に強い。

📚 ゲシュタルト原則 × 統計手法 マッピング

統計手法対応するゲシュタルト原則SSDSE-B-2026 での実装
クラスタリング類同 + 閉合KMeans で 8 群に分け、 凸包で囲む
回帰分析連続(回帰直線)人口 vs 出生数の OLS 線
時系列分析連続折れ線で年次推移
主成分分析図と地(軸の強調)PC1, PC2 平面に 47 県をプロット
ヒストグラム近接(ビン幅)人口分布を 10 ビンに
箱ひげ図閉合(箱)地方ごとの人口分布比較
相関ヒートマップ類同(連続色)47 県 × 10 指標の相関
ツリーマップ共通領域8 地方の面積比較
サンキー図連続転入元→転入先のフロー
レーダーチャート閉合(多角形)県ごとの 6 指標比較

🎓 学習ロードマップ(初学者→上級者)

  1. Step 1(初学者):6 原則の名前を覚え、 身の回りの UI(カード・路線図・ロゴ)で例を 10 個収集する。
  2. Step 2(初級):SSDSE-B-2026 を読み込んで、 「東京 / 大阪 / 愛知」を強調する棒グラフを作る(図と地の練習)。
  3. Step 3(中級):地方区分 8 群を色分けして散布図に(類同)。 凸包で関東を囲む(閉合)。
  4. Step 4(中級+):時系列折れ線で 4 都府県の推移を描き、 markevery で連続性を維持。
  5. Step 5(上級):CUD 配慮で形 × 色の二重符号化を実装。 ALT テキスト・スクリーンリーダー対応を行う。
  6. Step 6(上級+):D3.js / Plotly でインタラクティブ可視化(共通運命:マウスオーバー連動)。
  7. Step 7(プロ):ユーザビリティテストでヒートマップ・視線追跡を取り、 原則の効果を定量評価する。

🌐 多領域での応用例(15 件)

領域適用例原則
建築ファサードのリズム近接・類同
音楽メロディーラインの認知連続
映画フレーム内構図図と地
スポーツスコアボード設計近接
医療電子カルテ UI類同・閉合
教育教科書レイアウト近接・連続
商業店舗陳列類同・近接
交通路線図・標識連続・類同
ゲームHUD 設計近接・図と地
マーケバナー・LP 構成図と地・閉合
公共行政文書フォーム近接・閉合
出版雑誌レイアウト近接・図と地
調査アンケート画面近接・連続
SaaS設定画面のグループ化近接・閉合
アクセシビリティフォーカスリング設計図と地

🧭 まとめ:今日から実践する 5 ステップ

  1. 関連項目を 24 px 以上離す(近接の境界)。 一方関連項目同士は 8 px 以内に。
  2. 同じカテゴリは同じ色で揃える(類同)。 1 カテゴリ=1 色を原則に。
  3. 時系列は左→右、 因果は上→下(連続の流れを尊重)。
  4. 主要 KPI は背景より明るく(図と地のコントラスト比 4.5:1 以上)。
  5. 強調は 1 つだけ(強調色 1 色を厳守。 残りは灰)。

🐍 Python 実装 #7(連続色:人口階級で choropleth 風グラデーション)

🎯 このコードでやること:47 都道府県の人口を 5 階級(百万人未満 / 100-200 万 / 200-500 万 / 500-1000 万 / 1000 万以上)に分け、 viridis 連続色で塗る。 類同(色階)と図と地(白枠)を同時適用。

📥 入力データ:47 県の人口 (A1101) のみ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import pandas as pd, matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101']].copy()
d23.columns = ['name','pop']
d23 = d23.sort_values('pop')

bins = [0, 1e6, 2e6, 5e6, 1e7, 2e7]
labels = ['< 100 万','100-200 万','200-500 万','500-1000 万','1000 万+']
d23['class'] = pd.cut(d23['pop'], bins=bins, labels=labels)

counts = d23['class'].value_counts().reindex(labels)
fig, ax = plt.subplots(figsize=(8,5))
cmap = plt.get_cmap('viridis', len(labels))
colors = [cmap(i) for i in range(len(labels))]
bars = ax.bar(range(len(labels)), counts.values, color=colors, edgecolor='white', linewidth=2)
for bar, c in zip(bars, counts.values):
    ax.text(bar.get_x()+bar.get_width()/2, c+0.3, str(c),
            ha='center', fontsize=14, fontweight='bold')
ax.set_xticks(range(len(labels))); ax.set_xticklabels(labels)
ax.set_ylabel('都道府県数')
ax.set_title('ゲシュタルト「類同(連続色)」:人口階級別の都道府県数')
plt.tight_layout(); plt.savefig('gestalt_choropleth_class.png', dpi=130)
print(counts)

📤 実行結果

< 100 万 10 100-200 万 21 200-500 万 7 500-1000 万 8 1000 万+ 1 Name: class, dtype: int64

💬 結果の読み方:47 県のうち 21 県が 100-200 万人台。 1000 万人超は東京都のみ。 viridis 連続色は CUD 配慮済みで、 印刷モノクロでも順序が保たれる優秀なカラーマップ。

🐍 Python 実装 #8(タイポグラフィ:文字サイズで階層化)

🎯 このコードでやること:matplotlib で 47 都道府県の人口ランキング上位 10 を、 1 位 28pt、 2-3 位 22pt、 4-10 位 16pt と階層化した KPI 風レイアウトに。

📥 入力データ:上の d23 から人口降順上位 10 県。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101']].copy()
d23.columns = ['name','pop']
top10 = d23.nlargest(10, 'pop').reset_index(drop=True)

fig, ax = plt.subplots(figsize=(7,9))
ax.axis('off')
for i, row in top10.iterrows():
    if i == 0:
        size, color, weight = 28, '#E53935', 'bold'
    elif i < 3:
        size, color, weight = 22, '#F57C00', 'bold'
    else:
        size, color, weight = 16, '#37474F', 'normal'
    y = 1 - (i+0.5)/len(top10)
    ax.text(0.02, y, f'{i+1}', fontsize=size, fontweight=weight, color=color)
    ax.text(0.12, y, row['name'], fontsize=size, fontweight=weight, color=color)
    ax.text(0.95, y, f'{row["pop"]/1e4:,.0f} 万人',
            fontsize=size, fontweight=weight, color=color, ha='right')
ax.set_title('人口ランキング上位 10 都府県(タイポ階層化)',
             fontsize=18, color='#0D47A1', pad=20)
plt.tight_layout(); plt.savefig('gestalt_typography.png', dpi=130)
print(top10)

📤 実行結果

name pop 0 東京都 14086000 1 神奈川県 9229000 2 大阪府 8763000 3 愛知県 7477000 4 埼玉県 7331000 5 千葉県 6257000 6 兵庫県 5370000 7 福岡県 5103000 8 北海道 5092000 9 静岡県 3555000

💬 結果の読み方:1 位東京 1408 万人は赤 28pt で最強調、 2-3 位(神奈川・大阪)は橙 22pt の中強調、 残り 7 位は黒 16pt の地。 ゲシュタルトの「図と地」をタイポ階層で実装。

🎯 配色パレット辞典(ゲシュタルト × CUD 対応)

パレット名想定原則色相SSDSE-B-2026 適用例
viridis類同(連続色)紫→青→緑→黄人口連続色マップ
plasma類同(連続色)紺→赤→黄高齢化率ヒートマップ
cividisCUD 完全対応紺→黄死亡率 choropleth
Set2類同(離散色)8 色パステル8 地方区分
Dark2類同(離散)8 色濃彩背景白の散布図
Paired類同(対)12 色対構成男女別 6 ペア
tab10類同(離散)10 色標準10 グループ分け
RdYlBu類同(発散色)赤→黄→青人口増減
RdBu類同(二極)赤→白→青転入超過
Greys図と地単色階調モノクロ印刷

🔍 タイポグラフィ階層辞典

階層サイズウェイト用途
H1 / KPI 主28-36 pt900「東京 1408 万」など主要数値
H2 / KPI 副22-26 pt700「神奈川 923 万」など 2 位以下
H318-20 pt600セクション小見出し
本文14-16 pt400説明文・データ表
注釈10-12 pt300出典クレジット・脚注

💼 ケーススタディ:47 都道府県人口ダッシュボード設計

ある自治体が「人口減少 KPI ダッシュボード」を Tableau / Power BI で作るシナリオを想定し、 ゲシュタルト原則をどう適用するかを段階的に示します。 入力は SSDSE-B-2026 の 47 都道府県・複数指標。

フェーズ 1:要件定義

フェーズ 2:レイアウト設計

フェーズ 3:配色決定

フェーズ 4:実装数値

KPI値(2023 年)適用原則
人口総数124,353,000 人図と地(最大文字)
出生数727,000 人近接(KPI 群内)
死亡数1,575,000 人近接(KPI 群内)
高齢化率29.1%連続色(赤強調)
関東 7 県合計43,527,000 人 (35.0%)閉合(凸包枠)
関西 7 府県合計21,990,000 人 (17.7%)閉合(凸包枠)

🧰 拡張 FAQ(Q21-Q40)

Q21. ゲシュタルトの逆理は?
知覚的群はあくまで「最も簡潔な解釈」に収束するため、 複雑な配置では群が崩れる。 プレグナンツ原則の例外として「振り子知覚」「ネッカー立方体」が知られる。
Q22. 視線追跡 (eye tracking) との関係は?
ゲシュタルトで形成された「群」はサッカード単位で読まれる。 関心領域 (AOI) を群に揃えると視線移動が滑らかになる。
Q23. 多変量データ可視化での限界は?
5 次元以上は同時表示が困難。 PCA / t-SNE / UMAP で 2-3 次元に落として群を見るのが定石。
Q24. インタラクティブ図表ではどう変わる?
マウスオーバー時に共通運命を適用(連動ハイライト)。 静的版より群知覚が強化される。
Q25. 印刷物(モノクロ)での代替は?
色を hatch(網掛け)や線種で代替。 類同を保ちつつ CUD 対応。
Q26. レーダーチャートはどう使う?
1 県を 1 多角形(閉合)で表現。 多県重ねは混雑するので 3 県以下推奨。
Q27. サンキー図の連続原則は?
左→右の流れを保ち、 帯幅で量を表現。 流入・流出を分けると視認性 UP。
Q28. ヒートマップの並び順は?
クラスタリング順 or 元データ順。 順序が違うとパターンが見える / 見えない。
Q29. 動的可視化のフレームレートは?
60 fps が滑らか。 30 fps 以下は群知覚(共通運命)が崩れる。
Q30. ARIA ラベルとの組み合わせは?
視覚的群を意味的 ARIA role("group" "region")で補強。 スクリーンリーダーでも構造が伝わる。
Q31. 高齢化率の段階を何色で表現する?
25% 未満:薄黄、 25-30%:橙、 30-35%:濃橙、 35% 以上:赤。 plasma 系で 4 階級。
Q32. 47 都道府県を 5×10 グリッドで配置する利点は?
各セルが同サイズで類同強化。 凡例なしでも「日本地図っぽい」配置で近接効果。
Q33. 棒グラフの代わりにドット プロットは?
ドット プロットは点数が多いほど見やすい。 47 県では棒より縦に並んだドットの方が読みやすい場合がある。
Q34. パイチャートの是非は?
3 種以下なら可。 8 地方の比較ならツリーマップやスタック棒の方が比較しやすい。
Q35. 地図 + 棒グラフのコネクション方法は?
クリック連動(共通運命)。 地図でクリックされた県を棒グラフでも強調。
Q36. データ更新時の連続性は?
アニメーションで「前回値→今回値」を補間。 共通運命で群が維持されたまま遷移する。
Q37. 散布図の点数 47 個は適切?
30-100 点が読みやすい範囲。 47 県はちょうど良い。 点サイズは 80-120 px が標準。
Q38. ラベルが重なる場合は?
強調県のみラベル表示。 残りはマウスオーバーで動的表示(共通運命)。
Q39. ゲシュタルトと認知負荷の関係は?
群が明確だと脳の負荷が下がる(Miller の 7±2 → 群数を 4-6 に絞ると最適)。
Q40. 47 都道府県を都市圏別(首都圏 / 京阪神 / 名古屋圏 / 福岡圏 / その他)で 5 分割は?
近接 + 共通領域の効果が最大。 5 群で 7±2 ルール内なので認知負荷も低い。

📌 まとめ:ゲシュタルトの法則を SSDSE-B-2026 で実践するチェックリスト

📜 歴史:ベルリン学派から認知神経科学まで

年代人物・出来事意義
1890Ehrenfels「Über Gestaltqualitäten」ゲシュタルト概念の萌芽
1912Wertheimer 仮現運動実験ベルリン学派の発足
1923Wertheimer 論文「形態の理論」6 原則の体系化
1929Köhler『Gestalt Psychology』英語圏へ普及
1935Koffka『Principles of Gestalt Psychology』教科書化
1992Palmer「Common Region」第 7 原則の追加
2012Wagemans et al. レビュー認知神経科学的検証
2020-CNN 解釈研究AI への応用が活発化

🐍 Python 実装 #9(地方間人口格差を視覚化)

🎯 このコードでやること:8 地方の人口合計をツリーマップ風に並べ、 共通領域 + 類同(色) + 図と地(白枠)の 3 原則を同時適用する。

📥 入力データ:47 県の人口と地方区分。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pandas as pd, matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101']].copy()
d23.columns = ['name','pop']

region_map = {'北海道':'北海道',
 '青森県':'東北','岩手県':'東北','宮城県':'東北','秋田県':'東北','山形県':'東北','福島県':'東北',
 '茨城県':'関東','栃木県':'関東','群馬県':'関東','埼玉県':'関東','千葉県':'関東','東京都':'関東','神奈川県':'関東',
 '新潟県':'中部','富山県':'中部','石川県':'中部','福井県':'中部','山梨県':'中部','長野県':'中部','岐阜県':'中部','静岡県':'中部','愛知県':'中部',
 '三重県':'関西','滋賀県':'関西','京都府':'関西','大阪府':'関西','兵庫県':'関西','奈良県':'関西','和歌山県':'関西',
 '鳥取県':'中国','島根県':'中国','岡山県':'中国','広島県':'中国','山口県':'中国',
 '徳島県':'四国','香川県':'四国','愛媛県':'四国','高知県':'四国',
 '福岡県':'九州','佐賀県':'九州','長崎県':'九州','熊本県':'九州','大分県':'九州','宮崎県':'九州','鹿児島県':'九州','沖縄県':'九州'}
d23['region'] = d23['name'].map(region_map)
agg = d23.groupby('region')['pop'].sum().sort_values(ascending=False)

colors = {'関東':'#1E88E5','中部':'#FB8C00','関西':'#E53935','九州':'#43A047',
          '東北':'#26A69A','中国':'#8E24AA','北海道':'#90A4AE','四国':'#FDD835'}

# 単純な水平 treemap 風レイアウト
fig, ax = plt.subplots(figsize=(13,3.5))
x = 0; total = agg.sum()
for region, pop in agg.items():
    w = pop / total * 100
    ax.add_patch(Rectangle((x, 0), w, 100, facecolor=colors[region], edgecolor='white', linewidth=3))
    ax.text(x+w/2, 60, region, ha='center', fontsize=16, fontweight='bold', color='white')
    ax.text(x+w/2, 35, f'{pop/1e4:,.0f} 万', ha='center', fontsize=13, color='white')
    ax.text(x+w/2, 15, f'{w:.1f}%', ha='center', fontsize=11, color='white')
    x += w
ax.set_xlim(0,100); ax.set_ylim(0,100)
ax.set_xticks([]); ax.set_yticks([])
ax.set_title('8 地方の人口シェア(ツリーマップ:共通領域 + 類同 + 図と地)',
             fontsize=14, color='#283593', pad=10)
plt.tight_layout(); plt.savefig('gestalt_treemap.png', dpi=130)
print(agg.apply(lambda x: f'{x:,}'))
print(f'\n全国合計: {agg.sum():,} 人')

📤 実行結果

region 関東 43,527,000 関西 21,990,000 中部 20,749,000 九州 14,029,000 東北 8,318,000 中国 7,070,000 北海道 5,092,000 四国 3,578,000 Name: pop, dtype: object 全国合計: 124,353,000 人

💬 結果の読み方:関東 35.0% が圧倒的首位、 関西 17.7% と中部 16.7% がほぼ同水準、 四国 2.9% が最小。 ツリーマップは「面積=量」が直感的で、 共通領域でグループ化された 8 地方を一目で比較可能。

🌐 国際比較:ゲシュタルト原則の文化差

文化圏読書方向主な視線パターンダッシュボード設計への含意
英語圏 / 欧州LTR / TtoBF 字パターン重要 KPI は左上
中東 / アラブRTL / TtoB逆 F 字重要 KPI は右上
日本 / 中国伝統TtoB / RTL(縦書)縦 Z 字右上から下へ流す
日本 / 現代LTR / TtoB(横書)F 字(欧米同様)SSDSE 図表の基本
CJK 共通読み手の言語によるグリッド志向強近接・閉合の評価高い

日本語の SSDSE-B-2026 ダッシュボードを設計する際は、 横書 LTR を採用するため F 字パターンを採用し、 関東地方を右上のメインカードに配置するのが現代日本のベストプラクティスです。 ただしレポート PDF が縦書混在の場合は、 縦書部分だけ TtoB / RTL を維持する。

⚖️ 倫理:ゲシュタルトの誤用と「視覚的嘘」

ゲシュタルトの強力さは 誤情報の伝達 にも使われます。 以下は注意すべき悪用パターンです。

  1. y 軸トリック:折れ線の y 軸を 0 から始めずに微差を誇張。 「連続」の見かけが事実を歪める。
  2. 3D 円グラフ:手前の扇を大きく見せる遠近錯視。 図と地の不当強調。
  3. 選択的色強調:ある党派だけ赤、 残りを灰にして「悪役」印象を作る。
  4. サイズ操作:直径を倍にすると面積は 4 倍。 視覚負担を悪用した規模誇張。
  5. 偽の共通領域:本来別群を同じ背景帯で囲み「同じ仲間」と誤認させる。

SSDSE-B-2026 のような公的データを扱う際は、 上記 5 つの誤用を避け、 「原則 = 真実の補強」になるよう意識する。 出典明記・スケール公開・色凡例の透明化は最低限のマナーです。

🎓 アカデミック演習(実データ分析の課題 5 件)

  1. 課題 A:SSDSE-B-2026 で 47 都道府県の人口と高齢化率を散布図に。 「類同(色:地方)」「閉合(凸包:関東)」「図と地(背景:白)」を全て適用したコードを書け。 <想定実装 60 行>
  2. 課題 B:2019-2023 年の 4 大都市圏(首都圏 / 京阪神 / 中京圏 / 福岡圏)の人口推移を折れ線で。 「連続」の原則を維持しつつ、 markevery で 2 年ごとにマーカー。 <想定実装 45 行>
  3. 課題 C:8 地方の人口シェアをツリーマップで。 squarify ライブラリで面積比に変換し、 共通領域を実装。 <想定実装 30 行>
  4. 課題 D:47 都道府県を K-means 5 クラスタに分け、 各クラスタを凸包で囲む散布図を作れ。 <scikit-learn を使用>
  5. 課題 E:ヒートマップで 47 県 × 10 指標を可視化。 行 / 列をクラスタリング順に並べ替えて類同を強化。 <seaborn.clustermap 推奨>

📊 SSDSE-B-2026 ダッシュボード サンプル数値表

指標全国関東関西関東 / 全国 比
人口総数 (A1101)124,353,00043,527,00021,990,00035.0%
男性人口 (A110101)60,493,00021,533,00010,520,00035.6%
女性人口 (A110102)63,860,00021,994,00011,467,00034.4%
65 歳以上 (A1303)36,229,00011,390,0006,423,00031.4%
出生数 (A4101)727,000253,000132,00034.8%
死亡数 (A4200)1,575,000482,000272,00030.6%
高齢化率29.1%26.2%29.2%

🎁 学習リソース(書籍・サイト・コース)

🐍 Python 実装 #10(ヒートマップ:県 × 指標)

🎯 このコードでやること:8 地方 × 4 指標(人口・出生・死亡・高齢化率)の集約値をヒートマップ化し、 連続色(類同)と行/列の並び順(連続)でパターンを浮かび上がらせる。

📥 入力データ:47 県を 8 地方で集約した中間集計表。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import pandas as pd, matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101','A4101','A4200','A1303']].copy()
d23.columns = ['name','pop','birth','death','elderly']
d23['rate_aged'] = d23['elderly']/d23['pop']*100

region_map = {'北海道':'北海道',
 '青森県':'東北','岩手県':'東北','宮城県':'東北','秋田県':'東北','山形県':'東北','福島県':'東北',
 '茨城県':'関東','栃木県':'関東','群馬県':'関東','埼玉県':'関東','千葉県':'関東','東京都':'関東','神奈川県':'関東',
 '新潟県':'中部','富山県':'中部','石川県':'中部','福井県':'中部','山梨県':'中部','長野県':'中部','岐阜県':'中部','静岡県':'中部','愛知県':'中部',
 '三重県':'関西','滋賀県':'関西','京都府':'関西','大阪府':'関西','兵庫県':'関西','奈良県':'関西','和歌山県':'関西',
 '鳥取県':'中国','島根県':'中国','岡山県':'中国','広島県':'中国','山口県':'中国',
 '徳島県':'四国','香川県':'四国','愛媛県':'四国','高知県':'四国',
 '福岡県':'九州','佐賀県':'九州','長崎県':'九州','熊本県':'九州','大分県':'九州','宮崎県':'九州','鹿児島県':'九州','沖縄県':'九州'}
d23['region'] = d23['name'].map(region_map)
agg = d23.groupby('region').agg({'pop':'sum','birth':'sum','death':'sum','rate_aged':'mean'})

# 正規化(各列を 0-1 に)
norm = (agg - agg.min()) / (agg.max() - agg.min())
order = ['関東','中部','関西','九州','東北','中国','北海道','四国']
norm = norm.loc[order]

fig, ax = plt.subplots(figsize=(8,5))
im = ax.imshow(norm.values, cmap='YlOrRd', aspect='auto')
ax.set_xticks(range(4)); ax.set_xticklabels(['人口','出生','死亡','高齢化率'], fontsize=12)
ax.set_yticks(range(8)); ax.set_yticklabels(norm.index, fontsize=11)
for i in range(8):
    for j in range(4):
        ax.text(j,i,f'{norm.iloc[i,j]:.2f}',ha='center',va='center',
                color='white' if norm.iloc[i,j]>0.5 else 'black', fontsize=10)
plt.colorbar(im, ax=ax, label='正規化値 (0-1)')
ax.set_title('8 地方 × 4 指標ヒートマップ(類同:連続色 / 連続:並び順)',
             fontsize=13, pad=10)
plt.tight_layout(); plt.savefig('gestalt_heatmap_region.png', dpi=130)
print(agg.round(0))

📤 実行結果

pop birth death rate_aged region 中国 7070000 42468 100848 33.0 中部 20749000 121110 267714 31.0 九州 14029000 93109 189635 32.0 北海道 5092000 24430 75120 33.0 四国 3578000 19598 56619 35.0 東北 8318000 41237 131093 34.0 関東 43527000 252911 481979 28.0 関西 21990000 132406 272076 30.0

💬 結果の読み方:関東が人口・出生・死亡で 1 位、 高齢化率は最低 28.0%。 四国 34.6%・東北 34.5% など地方は高齢化率が高い。 ヒートマップは類同(色濃度)でパターンを瞬時に把握できる。

🎬 アニメーション設計:共通運命の実装ガイド

アニメーション種別推奨秒数フレームレートSSDSE-B-2026 適用例
フェード イン0.3 秒60 fpsKPI カード初期表示
トランジション0.4 秒60 fps年次切替(2022 → 2023)
ハイライト0.2 秒60 fpsマウスオーバー時の県強調
ドリル ダウン0.5 秒60 fps地方 → 県別表示
スクロール継続60 fps縦長レポート閲覧
注釈ポップ0.25 秒60 fpstooltip 表示

🏁 最終総括:ゲシュタルト原則 × データサイエンスの統合

本ハンドブックを通じて学んだ重要なポイントを整理します。

  1. 原則は単独ではなく組み合わせで使う:類同(色)+近接(位置)+閉合(枠)の三重符号化が最も効果的。
  2. SSDSE-B-2026 のような公的データを使う:合成データは説得力が無い。 実値で「東京 1408 万人」「関東 35.0%」を示すことで聴衆の信頼を獲得。
  3. 強調色は 1 色だけ:「東京の赤」一色を残し、 他は灰系統で「地」にする。 Few (2012) の「Visual Highlighting」原則。
  4. CUD 配慮を必須に:色 + 形 + サイズの多重符号化で色覚多様性に対応。 viridis / cividis は安全な選択。
  5. 動的可視化では共通運命を活かす:マウスオーバーでハイライト連動、 0.2-0.5 秒のフェードで群知覚を強化。
  6. 倫理:原則を真実の補強に使う:y 軸トリック・3D 円グラフ・選択的色強調などの誤用を避ける。 出典明記は最低限のマナー。

📌 学習者向け Q&A(追加 Q41-Q60)

Q41. プレゼンに使うアイコンの選び方は?
同カテゴリは同じスタイル(線画 / 塗りつぶし)で類同。 サイズも揃える。
Q42. グリッドシステムとは?
12 列グリッドで要素配置。 近接の境界を 1 グリッド単位で管理。
Q43. 余白(マージン)の単位は?
8 px の倍数(8, 16, 24, 32)。 視覚リズムが整い、 共通領域も作りやすい。
Q44. 線の太さは何種類まで?
1 px(細)/ 2 px(中)/ 4 px(太)の 3 段階。 多すぎると階層が崩れる。
Q45. 角丸(border-radius)の効果は?
角丸は親しみやすさ。 4-8 px の小さい値で閉合を維持。
Q46. 影(box-shadow)の使いどころは?
カードを「浮かせる」と図と地が強化。 影は控えめに(rgba(0,0,0,0.1))。
Q47. ボタンの形状は?
角丸長方形が標準。 同機能群は同じ形・色(類同)。
Q48. フォントファミリーは?
本文 1 種 + 見出し 1 種 + コード 1 種 = 計 3 種以下。 類同を維持。
Q49. 行間(line-height)は?
本文 1.5-1.8、 見出し 1.2-1.4。 縦の近接 / 連続性が決まる。
Q50. 文字色は?
本文 #333 / 見出し #0D47A1 / 注釈 #777。 3 階層で図と地を作る。
Q51. 47 都道府県マップ作成のおすすめライブラリは?
geopandas + 国土地理院シェープファイル。 plotly.express でも可能。
Q52. 散布図にラベルが重なる時の自動回避は?
adjustText ライブラリ。 ラベル位置を最適化して重なりを解消。
Q53. ダッシュボードのページ数は?
1 ページが理想。 スクロール禁止で「F 字 1 画面」に収める。
Q54. レポート PDF と Web ダッシュボードの違いは?
PDF は静的(連続性重視)、 Web はインタラクティブ(共通運命活用)。
Q55. インフォグラフィックの読み手は?
30 秒で結論を得たい層。 主要 KPI を 1 つに絞り、 図と地で強調。
Q56. データジャーナリズムでの応用は?
主要事実を最初に大きく(図)、 詳細を脚注に(地)。 NYT・FT のスタイル。
Q57. アクセシビリティ評価ツールは?
axe DevTools、 WAVE、 Lighthouse。 コントラスト比 4.5:1 を自動チェック。
Q58. 色覚シミュレータは?
Color Oracle(Mac/Win)、 Sim Daltonism(Mac)。 P/D/T 型を擬似体験できる。
Q59. matplotlib のデフォルトテーマ変更は?
plt.style.use('seaborn-v0_8-whitegrid') など。 図と地を一発でセット。
Q60. ゲシュタルトの法則は機械学習にも応用される?
CNN の畳み込み層は近接・類同を学習している。 GAN の自然画像生成にも応用。

🎯 自己テスト:到達度チェック(15 項目)

  1. [ ] 近接・類同・連続・閉合・図と地・共通運命の 6 原則を 1 文で説明できる
  2. [ ] Palmer (1992) の Common Region を含めた 7 原則を列挙できる
  3. [ ] SSDSE-B-2026 を読み込んで散布図を描ける
  4. [ ] 47 都道府県を 8 地方で色分けできる
  5. [ ] 凸包で関東 7 県を囲める
  6. [ ] 折れ線で年次推移を描ける
  7. [ ] 上位 3 強調 + 残り灰の配色を実装できる
  8. [ ] CUD 配慮で形 × 色の二重符号化ができる
  9. [ ] ヒートマップを行 / 列のクラスタリング順で並べ替えられる
  10. [ ] ツリーマップで面積比を表現できる
  11. [ ] viridis / cividis の使い分けを説明できる
  12. [ ] WCAG 2.1 のコントラスト比 4.5:1 をチェックできる
  13. [ ] F 字パターンの読書動線を理解している
  14. [ ] y 軸トリックなどの誤用を見抜ける
  15. [ ] 出典 (SSDSE-B-2026) を必ず明記する習慣がある

🖼 補足: ゲシュタルトの法則をデータ可視化に活かす

ゲシュタルトの法則は 「人間がパターンや構造をどう知覚するか」を体系化した認知原理 であり、 データ可視化の現場でも「近接・類同・連続・閉合・共通運命」などの法則を意識することで読み手の理解負荷を大幅に下げられる。 ここでは 3 枚の図と Python 実装で、 これらの法則がチャート設計にどう作用するかを示す。

図 1: 散布図でグループ知覚を実現(scatter_basic.png)

散布図で「近接」「類同」を活用すると、 同じグループに属する点が自然にまとまって見える。 色・形・サイズを揃えることで「これらは同じカテゴリ」というメッセージを言葉なしに伝えられる。

散布図でのグループ知覚

図 2: 棒グラフでの「類同」と「閉合」(hist_basic.png)

棒グラフでは「類同(同じ色 = 同じカテゴリ)」と「閉合(枠線で囲む)」を組み合わせることでグループ識別が容易になる。 ただし色数が多すぎると「類同」がかえって阻害されるため、 最大 5-7 色までが原則。

棒グラフでの類同・閉合

図 3: 折れ線グラフでの「連続」と「共通運命」(time_series.png)

折れ線グラフは「連続の法則」によって時系列の方向性を強力に表現する。 複数線が同じ方向に動くとき「共通運命の法則」が働き、 「これらは連動している」と直感的に読まれる。 SSDSE-B-2026 の都道府県人口推移を複数の折れ線で並べると、 同じ地方ブロックの県は同じ方向に動く傾向が「共通運命」として浮かぶ。

折れ線グラフでの連続・共通運命

📊 表: ゲシュタルトの主要 7 法則と可視化応用例

法則原理可視化での応用
近接 (Proximity)近い要素は同じグループ小カテゴリの棒を寄せる
類同 (Similarity)似た要素は同じグループ同色 = 同カテゴリ
連続 (Continuity)滑らかな線は連続として知覚折れ線・滑らかな曲線
閉合 (Closure)不完全な図形を補完して認識枠線で領域を強調
共通運命 (Common Fate)同じ動きの要素は同グループアニメ・複数線の同調
図と地 (Figure-Ground)前景と背景の分離背景色を薄く・前景を強調
対称 (Symmetry)対称的な配置は安定感レイアウトの左右対称

🐍 Python 実装: ゲシュタルトの「近接」「類同」を活かした棒グラフ

このコードでやること: SSDSE-B-2026 の都道府県人口(A1101)を代表 4 都道府県について取り出し、 地方ブロック別に色分け(類同)した棒グラフを描く。 同じ色 = 同じ地方というルールを、 凡例を読む前に「類同の法則」で直感させる例を示す。

📥 入力データ (SSDSE-B-2026 の 2023 年・抜粋):

Prefecture 地方 A1101(人口総数) 北海道 北海道 5092000 東京都 関東 14086000 愛知県 中部 7477000 大阪府 関西 8763000
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', header=0, encoding='cp932', skiprows=[1])
d23 = df[df['SSDSE-B-2026']==2023][['Prefecture','A1101']].copy()
d23.columns = ['name', 'pop']

region_map = {'北海道':'北海道', '東京都':'関東', '愛知県':'中部', '大阪府':'関西'}
colors = {'北海道':'#1f77b4', '関東':'#ff7f0e', '中部':'#2ca02c', '関西':'#d62728'}
sub = d23[d23['name'].isin(region_map)].copy()
sub['region'] = sub['name'].map(region_map)

fig, ax = plt.subplots(figsize=(8, 5))
for region, g in sub.groupby('region'):
    ax.bar(g['name'], g['pop']/1e4, color=colors[region], label=region)
ax.set_ylabel('人口(万人)')
ax.legend()
print('地方別に色分け(類同の法則)した都道府県人口')
plt.show()

📤 実行すると次の出力が得られる:

地方別に色分け(類同の法則)した都道府県人口 → 関東(東京 1409 万)が最も高く、 各地方が固有の色で瞬時に区別される → 凡例を読まなくても「色 = 地方ブロック」が直感的に知覚される

💬 「類同の法則」により、 同じ色の棒が自動的に同一グループ(地方ブロック)として認識される。 さらに凡例の文字情報を読まずとも、 色だけで地方の分布特性が直感的に伝わる。 これがゲシュタルトを活かしたデータ可視化の威力。

✅ 理解度チェック (ゲシュタルトの法則)

  1. 「近接の法則」と「類同の法則」の違いを 1 行で説明できますか?
  2. 棒グラフで色を 10 色以上使うと、 ゲシュタルト的にどんな問題が起きますか?
  3. 「共通運命の法則」を時系列折れ線グラフでどう活用しますか? 具体例を一つ。
  4. 「図と地の法則」を使って、 重要なデータを目立たせる方法は?
  5. SSDSE-B-2026 で「47 都道府県を散布図に描く」とき、 ゲシュタルト的に最も読みやすい配色戦略は何ですか?

⚠️ ゲシュタルトを可視化で使うときの落とし穴 (3 件)

📜 ゲシュタルト心理学の起源と発展

ゲシュタルト心理学は 1910 年代にドイツの心理学者 Max Wertheimer、 Wolfgang Köhler、 Kurt Koffka らによって創始された。 ドイツ語の Gestalt は「形態」「全体像」を意味し、 「全体は部分の総和以上である(The whole is greater than the sum of its parts)」という Aristotelian な思想を経験心理学に持ち込んだ点で革命的だった。 Wertheimer は 1912 年に「Phi 現象(仮現運動)」を実験的に示し、 連続して点滅する 2 つの光が「動いているように見える」現象を発見した。 これは「人間の知覚は刺激の物理的特性だけでなく、 脳が能動的に組織化したパターンに依存する」という考え方の根拠となった。 1920-30 年代に近接・類同・連続・閉合などの法則が体系化され、 デザイン・建築・情報可視化に応用されるようになった。 現代では Edward Tufte の "The Visual Display of Quantitative Information" (1983)、 Stephen Few の "Now You See It" (2009) などがゲシュタルト原理をデータ可視化に応用する古典として知られる。 さらに認知科学の発展により、 これらの原理は脳の視覚野(V1, V2, V4, IT 野)の階層的処理と整合的であることが確認されており、 単なる経験則ではなく神経科学的な裏付けを持つ。

🧪 ゲシュタルト原理を活かしたダッシュボード設計の実務手順

ゲシュタルト原理をビジネスダッシュボード設計に活かす標準手順: (1) 最初に「読み手は何を一目で知りたいか」を明確化する(KPI 1-3 個程度)。 (2) 重要 KPI を画面の左上または中央に大きく配置し、 「図と地」「閉合」の法則で目立たせる。 (3) 関連する補助指標は KPI の近くに「近接」配置し、 同じカテゴリの指標は「類同(同色・同形)」で揃える。 (4) 時系列データは折れ線グラフで「連続」の法則を活用し、 複数系列を比較するときは「共通運命」を活かす。 (5) 凡例は最小限に抑え、 可能なら直接ラベル付けで凡例を廃止する。 (6) 色は 5-7 色を上限とし、 アクセシビリティ(色覚多様性対応)を考慮した配色(viridis、 cividis、 ColorBrewer など)を選ぶ。 (7) グリッド線・枠線・装飾は最小限にし、 データ・インクの比率(Tufte の data-ink ratio)を最大化する。 (8) 最後に「凡例を隠して読めるか」「白黒印刷でも読めるか」「色覚多様性シミュレータでも読めるか」の 3 つのテストを実施する。

💡 SSDSE-B-2026 を用いたゲシュタルト可視化のケーススタディ

SSDSE-B-2026 の都道府県データを可視化するとき、 ゲシュタルト原理を意識すると劇的に読みやすさが向上する。 例えば 47 都道府県の人口と出生数の散布図を描くとき、 (a) 全 47 県を異なる色で色分けすると凡例肥大化で「類同」が破綻するが、 (b) 8 地方ブロックで色分けすれば「類同」が機能し、 同じ地方の県が自然にまとまって見える。 さらに (c) 関東圏(東京・神奈川・埼玉・千葉)の 4 県を「近接」配置で隣り合わせに描けば、 「東京一極集中」が視覚的に強調される。 (d) 時系列で人口推移を描く場合は折れ線グラフを使い、 「連続」の法則で増減傾向を直感化する。 (e) 同じ地方ブロックの県の折れ線が同じ向きに動けば「共通運命」が働き、 「東北地方は全県で人口減少傾向」というメッセージが言葉なしに伝わる。 (f) 注目すべき県(東京・大阪・愛知)には濃い色を、 他の県には薄い色を使い、 「図と地」の法則で重要なデータを際立たせる。 こうした工夫を意識的に組み合わせることで、 単なるデータの集合体が「読みやすいストーリー」に変わる。 これがゲシュタルト原理を実践的に活用する醍醐味である。

🔬 ゲシュタルト原理と認知負荷理論の関係

ゲシュタルト原理は John Sweller (1988) の「認知負荷理論(Cognitive Load Theory)」と深い関連を持つ。 認知負荷理論は人間の作業記憶の容量が有限であり(Miller の 7±2)、 学習や情報処理には (1) 内在的認知負荷(情報自体の複雑性)、 (2) 外在的認知負荷(提示方法の複雑性)、 (3) 関連的認知負荷(学習に向けた認知活動)の 3 種類があると提唱する。 データ可視化の文脈では、 ゲシュタルト原理を活用することで「外在的認知負荷」を最小化できる。 たとえば近接の法則を活用すれば「どれが同じグループか」を考える認知コストが減り、 類同の法則を活用すれば「色とカテゴリの対応を覚える」コストが減る。 これにより読み手は「データそのものを理解する」(内在的認知負荷)と「データから洞察を引き出す」(関連的認知負荷)に脳のリソースを割り当てられる。 逆に、 ゲシュタルト原理に反する可視化(色数が多すぎる、 配置がランダム、 グループ境界が不明瞭など)は、 読み手の脳に余計な負荷をかけ、 結果として「理解できない」「読み飛ばす」「誤読する」という現象を生む。 良いデータ可視化とは「読み手の脳の負荷を可能な限り減らし、 本質的な情報処理にリソースを集中させる設計」とも言える。 これはゲシュタルト原理が単なる美的原則ではなく、 認知科学的な裏付けを持つ実践的なツールであることを示す。

🌐 ゲシュタルト原理の現代的応用領域

ゲシュタルト原理は 100 年以上前に提案された古典的な原理だが、 その応用領域は現代でも拡大し続けている。 (1) UI/UX デザイン: Web サイト、 モバイルアプリの画面設計でナビゲーション・コンテンツ階層を直感的にする。 Material Design や Apple HIG など主要なデザインガイドラインはゲシュタルト原理に基づく。 (2) データジャーナリズム: New York Times、 Financial Times などの一流メディアのインフォグラフィックスは、 ゲシュタルト原理を徹底的に活用して複雑なデータをストーリーとして提示する。 (3) 科学論文の図表: 学術論文の図表でも、 グループ化・色分け・凡例配置などゲシュタルト原理が暗黙的に使われている。 良い図表は読者の理解負荷を下げ、 引用率にも影響する。 (4) 機械学習の可視化: t-SNE、 UMAP、 PCA などの次元削減結果を表示するとき、 クラスタを色分けすることで「類同」と「近接」を同時に活用し、 構造発見を促す。 (5) 地図デザイン: 地理情報システム(GIS)の地図表示でも、 地域分類・道路ネットワーク・建物分布などをゲシュタルト原理で整理する。 (6) VR/AR インターフェース: 3 次元空間での情報配置でも、 「視野内の近接」「奥行きによる類同」など、 2 次元のゲシュタルト原理を 3 次元に拡張した設計が研究されている。 これらの応用に共通するのは「人間の知覚・認知の特性を尊重した設計」という根本姿勢である。

📋 ゲシュタルト原理を使った可視化チェックリスト

最後に、 自分が作った可視化がゲシュタルト原理を活かせているかをチェックするためのチェックリストを示す。 (1) 凡例なしで「どの色がどのカテゴリか」が直感できるか? (直接ラベル付け、 もしくは色とカテゴリの関連性を強化)。 (2) 同じカテゴリの要素は近接 / 類同で自然にグループ化されているか? (配置、 色、 形状の統一)。 (3) 重要なデータは「図」として、 補助情報は「地」として階層化されているか? (色の濃淡、 サイズの差、 ハイライト)。 (4) 時系列データは「連続」の法則で読みやすいか? (滑らかな折れ線、 適切な間隔)。 (5) 複数系列が動くとき「共通運命」が活きているか? (色分けと向きの整合)。 (6) 凡例の項目数が 7 個以内か? (Miller の 7±2 の原則)。 (7) 色覚多様性シミュレータでも読めるか? (Coblis などのツールで確認)。 (8) 白黒印刷でも読めるか? (形状や濃淡も併用)。 (9) 30 秒だけ見た後で「何が言いたいか」が伝わるか? (ストーリー性)。 (10) 不要な装飾(背景画像、 派手な枠線、 過剰なグリッド)を削除したか? (Tufte の data-ink ratio)。 これら 10 項目を意識的にチェックすることで、 ゲシュタルト原理を活かした読みやすい可視化が継続的に生まれる。

🎨 ゲシュタルト原理を実装するためのツール選択

ゲシュタルト原理を可視化に実装するには、 適切なツール選択も重要である。 (1) matplotlib: Python の標準可視化ライブラリ。 細かいカスタマイズが可能で、 配置・色・サイズを自由に制御できる。 ただし美しいデフォルト出力にはコードの作り込みが必要。 (2) seaborn: matplotlib の上位ラッパー。 統計的な可視化(箱ひげ、 ヒートマップ、 ペアプロット)が簡単に描けて、 ゲシュタルト原理を活かしたデフォルト配色(cubehelix, viridis)が魅力。 (3) plotly: インタラクティブ可視化。 ホバー時に詳細情報を表示できるので、 ダッシュボードで「全体俯瞰 + 詳細探索」の両立が可能。 (4) altair / vega-lite: 文法ベースの可視化。 「グルーピング = 同じカテゴリ」「色 = 別カテゴリ」など、 ゲシュタルト原理を文法的に表現できる。 (5) D3.js: Web ベースのフルカスタム可視化。 New York Times レベルの凝った可視化が作れる代わりに学習コストは高い。 (6) Tableau / PowerBI: ビジネス向け BI ツール。 ドラッグ&ドロップで可視化でき、 ゲシュタルト原理に沿った default デザインが多い。 (7) Observable: ノートブック型可視化プラットフォーム。 D3.js を簡単に使え、 教育用途にも適する。 SSDSE-B-2026 を扱う授業や記事では、 matplotlib + seaborn の組み合わせが第一推奨で、 インタラクティブが必要な場合は plotly を追加するパターンが標準である。

🎓 教育的視点: ゲシュタルト原理を学ぶステップ

データサイエンスを学ぶ学生がゲシュタルト原理を実用レベルで身につけるための段階的アプローチ: (1) まず古典的な実験例(Phi 現象、 ルビンの壺、 ネッカーの立方体)を見ることで、 「人間の知覚が能動的にパターンを構築している」という事実を体感する。 (2) 次に静的な可視化(棒グラフ、 散布図)で「近接」「類同」「閉合」を意識した配色・配置の練習を行う。 良い例と悪い例を並べて比較するのが効果的。 (3) 続いて時系列可視化や複数系列の比較で「連続」「共通運命」を体験する。 SSDSE の人口推移データなど、 都道府県別の時系列が良い教材。 (4) インタラクティブダッシュボード設計で「図と地」を駆使し、 重要情報と補助情報の階層化を実践する。 (5) 最後に色覚多様性・印刷出力・モバイル表示など、 多様な提示環境での見え方を意識した設計を学ぶ。 こうした段階的な学習プロセスを経ることで、 学生は「データを正確に伝える設計」と「読み手の理解負荷を下げる設計」が同じことだという核心的な理解に至る。 単なる「美しい可視化」ではなく「機能的に正しく伝わる可視化」が、 ゲシュタルト原理を学ぶ最終的なゴールである。

🔧 実務上のゲシュタルトチェックリスト

業務でデータ可視化を制作するときに毎回確認すべきゲシュタルトチェックリスト: (1) この図表で伝えたい一番のメッセージは何か? 30 秒で伝わる構成か? (2) 同じグループに属する要素は近接 / 類同で自然にまとまっているか? 異なるグループは適切に分離されているか? (3) 色数は 5-7 色以内か? 凡例が肥大化していないか? (4) 重要な情報と補助情報は階層化されているか? 視覚的なノイズ(不要なグリッド、 派手な背景色)を最小化したか? (5) 時系列が含まれる場合、 連続の法則と共通運命を活かしたデザインか? (6) 色だけに頼らず、 形状・サイズ・パターンも併用したか? (色覚多様性への配慮)。 (7) 凡例を隠して可読性を確認したか? 直接ラベル付けで凡例を不要にできるか? (8) 白黒印刷でも読めるか? モバイル画面でも読めるか? (9) 不要な装飾(3D 効果、 影、 派手な枠線)を削除したか? (10) 同僚や読者にプロトタイプを見せ、 「何が一番に伝わるか」をフィードバック得たか? こうした 10 項目を毎回チェックすることで、 ゲシュタルト原理を活かした優れた可視化が安定的に生まれる。 こうした実務上のチェックは、 単なる「美的な配慮」ではなく「読み手の認知負荷を下げ、 メッセージを正確に届ける」という機能的な目的を持つ。 ゲシュタルト原理を意識的に使うことは、 データ可視化の専門家としての基本姿勢である。

🧾 発表前の最終確認

ゲシュタルト原則を可視化に使う時は、 近接、類同、連続、閉合、図地のどれを使ったかを意識します。 見た目の美しさだけでなく、 読み手が正しいグループ化を自然に行えるかを確認します。

⚠️ よくある落とし穴

ゲシュタルト 7 原則 (近接・類同・連続・閉合・図地・対称・共通運命) は 1920 年代 Wertheimer/Köhler の知覚心理学に源流があり、 1990 年代以降 Tufte/Cleveland/Few によりデータ可視化の設計原理に転用された。 SSDSE-B 都道府県 47 件の散布図・棒グラフでもこれらを誤用すると 47 県の関係が逆に見えるなど致命的誤読を招く。 以下は実務で頻発する 5 つの典型ミス。

❌ 色を使いすぎる
10 種類の色で塗ると類同が機能しません。 5 色程度+形状で補助。
❌ 色覚多様性無視
赤緑色覚異常の方は赤と緑を区別困難。 ColorBrewer や viridis を活用。
❌ 凡例を遠くに置く
下や別ページに置くと近接違反。 直接ラベル付与 (direct labeling) が読みやすい。
❌ 乱れた連続性
折れ線を不必要に曲げる、 軸を非ゼロ起点にすると誤読を招く。
❌ 過剰な装飾
3D 効果や影は図と地を曖昧にする。 シンプル原則を。

※ Tufte/Cleveland 等の可視化文献および Kaggle 解析現場で頻発する典型ミス。

🗺 概念マップ

ゲシュタルトの法則を中心に、データ可視化の設計原則(Tufte の原則)と派生ガイドライン、UI/UX 応用先を放射状に配置した。近接・類似・閉合・連続・共通運命の 5 法則が、グラフ・ダッシュボード・地図表現のそれぞれにどう作用するかを矢印で示している。

ゲシュタルトの法則 Tufte の原則 Pre-attentive 処理 Cleveland 知覚研究 カラーユニバーサルデザイン 情報設計 図と地 (figure-ground)

ゲシュタルト原則は「近接 (proximity)」「類同 (similarity)」「閉合 (closure)」「連続 (good continuation)」「共通運命 (common fate)」「図と地 (figure-ground)」の 6 つの法則で構成され、 1920 年代の Wertheimer・Köhler・Koffka らベルリン学派が体系化した。 データ可視化では、 散布図で同色マーカーをグループとして読ませる (類同)、 折れ線グラフで点を線で繋いで時系列を示す (連続)、 棒グラフで隣接バー同士をまとめてカテゴリ化する (近接) など、 図表設計の根本原則として 100 年経った今も使われ続けている。

🔗 隣接手法への橋渡し

「ゲシュタルト原則」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。

上流の視覚認知科学・図と地の分離で前提理論を確認し、 並列のプリアテンティブ属性・色彩理論とデザイン原則を統合し、 下流のダッシュボード設計・データ可視化評価に応用する。 ゲシュタルト原則は単独の美的指針ではなく、 認知負荷を下げる科学的根拠として可視化の全工程に効く。

🌳 手法選択フロー

「ゲシュタルト原理」を実際の課題に当てはめるとき、 状況別に何を選ぶかを 3 段階で判定する。

  1. 強調したい構造は? グループ化 → 近接・類似、 順序 → 連続性、 全体像 → 閉合、 主役強調 → 図と地
  2. 情報量の多さは? 多量データ → 共通運命・整列で視覚チャンク化、 少量 → 図と地で明確な主従関係
  3. 対象ユーザーは? 専門家 → 慣例的配色・凡例を活用、 一般 → アイコン・色相による直感誘導を優先

ゲシュタルト原則は単独で適用するものではなく、 複数原則を組み合わせて「視線誘導 → グループ化 → 比較」の流れを設計する。 ダッシュボードでは特に近接・整列・対比 (CRAP 原則) と統合して使う。

❌ 色を使いすぎる
10 種類の色で塗ると類同が機能しません。 5 色程度+形状で補助。
❌ 色覚多様性無視
赤緑色覚異常の方は赤と緑を区別困難。 ColorBrewer や viridis を活用。
❌ 凡例を遠くに置く
下や別ページに置くと近接違反。 直接ラベル付与 (direct labeling) が読みやすい。
❌ 乱れた連続性
折れ線を不必要に曲げる、 軸を非ゼロ起点にすると誤読を招く。
❌ 過剰な装飾
3D 効果や影は図と地を曖昧にする。 シンプル原則を。

※ Tufte/Cleveland 等の可視化文献および Kaggle 解析現場で頻発する典型ミス。

📜 ひとことヒストリー

ゲシュタルトの法則 は「可視化」分野の中で発展してきた概念・手法です。 学術的には継続的な研究で精緻化され、 実務的にはツール・ライブラリの普及で誰でも使えるようになってきました。 用語の使い方・意味は時代と分野で少しずつ変わるため、 文脈に応じた解釈が大切です。 入門書だけでなく、 標準的な教科書(例:データサイエンス・統計学の定本)や信頼できるオンライン教材も併用すると、 ぶれない理解に近づけます。

✅ 実務チェックリスト — ゲシュタルトの法則

  • □ 用語の定義を自分の言葉で説明できるか
  • □ 使うべき場面と使ってはいけない場面を区別できているか
  • □ 数式や指標の前提条件を確認したか
  • □ 入力データの尺度・分布・サンプル数を確認したか
  • □ 結果の不確実性(信頼区間・標準誤差)を把握しているか
  • □ 解釈と限界を区別できているか
  • □ 関連用語・落とし穴を一通り点検したか
  • □ レポートに必要な情報(出典・前提・限界)を含められるか

🎯 まとめ — このページで押さえること

「ゲシュタルトの法則」 はこのページで詳しく扱った概念です。 持ち帰ってほしい 3 つの要点

  1. ゲシュタルトの法則=人間が 図形をまとまりとして知覚するパターンの法則群。 1920 年代ベルリンで発展。
  2. 代表 5 原則:近接(近いものは同じ群)・類同(似た外見は同じ群)・連続(滑らかな線として知覚)・閉合(隙間を補完)・図と地(前景と背景)。
  3. データ可視化で「同じカテゴリの点を色で揃える」「関連項目を近づける」のは類同・近接の応用。

さらに学ぶには、 関連用語関連グループ教材 を参照してください。 各用語ページを縦断的に読むことで、 体系的な理解が育ちます。

🧭 解説深化 — グループ化の力と「にせの群」

本文では 5 原則を「知覚のまとまり」として紹介した。 ここでは姉妹ページ 視覚属性(位置・長さ・色などの読み取り精度を扱う)とは角度を変え、 近接・類同・共通運命 の 3 つが チャートの「群(グループ)」をどう自動生成し、 ときに存在しない群(にせの群)を暗示するか に絞って深掘りする。 都道府県の数値は SSDSE-B-2026(2023 年, 47 都道府県。時系列は 2012→2023) の実測値のみを用いる。

💡 直感 — チャートの「群」は 3 つの手がかりで自動的に生まれる

脳は図形を 意識する前(前注意的)に ひとまとまりへ束ねる。 チャート上でこの束ね方を決めるのが次の 3 手がかりで、 いずれもデータ本体ではなく「見せ方」が引き金になる点が重要。

⚠️ 落とし穴(重要)— 「にせの群」を作らない

3 手がかりはいずれも データに実在しない境界 を読み手に信じ込ませ得る。 SSDSE-B の実測値で 3 つの典型を示す。

❌ 近接:ソート棒グラフの「すき間」がにせの区切りを作る
2023 年の人口を降順に並べると、 東京都 1408.6 万 の次が神奈川県 922.9 万485.7 万もの大きなすき間が空く。 続く神奈川〜北海道の 8 都道府県は 509〜923 万に密集し、 北海道 509.2 万→静岡県 355.5 万で再び 153.7 万のすき間が開く。 この 2 つのすき間(近接の切れ目)だけで読み手は「東京/大都市 8/その他」という 3 群を錯覚するが、 これは連続分布(中央値 154.9 万, 最小 沖縄手前の 53.7 万)に人為的な線を引いたにすぎない。 境界を主張したいなら、 実際に群を検定・区分(自然分類・分位)してから色や区切り線で明示する。
❌ 類同:色分けが「値の群」ではなく「ラベルの群」を暗示する
47 点の散布図を地方ブロック(例:関東・近畿…)で色分けすると、 同色どうしが 1 群に見える(類同)。 しかし人口では関東の東京都 1408.6 万と、 同じ関東の茨城県 282.5 万のように同色内の差が群間差より大きいことがある。 色は「所属ラベル」を示すだけで「値が近いこと」を保証しない。 量の大小を伝えたいなら色相ではなく位置・長さに割り当てる(→視覚属性)。
❌ 共通運命:同じ向きの動きが異質な原因を隠す
2012→2023 の人口変化率を折れ線で重ねると、 上昇は 7 都県のみ(東京 +6.4%・沖縄 +4.0%・神奈川 +1.8%・埼玉 +1.6%・千葉 +0.9%・愛知 +0.6%・福岡 +0.3%)、 残る 40 道府県は減少(最大の減は秋田 −14.0%)。 上昇 7 本は「共通運命」で 1 群に見えるが、 東京(社会増・転入超過)と沖縄(自然増・高い出生)では増加の原因が全く異なる。 共通運命による群化は結果の類似を示すだけで原因の同一性を意味しない。 群として語る前に要因を分解する。

※ 数値は SSDSE-B-2026(人口 A1101, 2023 年および 2012→2023 の変化率)を実際に集計した実測値。 上の「地方ブロック色分け」はグループ化の説明用に想定した架空の配色設定で、 配色は実データではない。

🚀 発展 — グループ化は「消す」より「意図して設計する」

グループ化は敵ではなく、 読み手の視線と結論を導く最強の道具になる。 設計側から使いこなす 3 手を挙げる。

🔗 関連ページ

本セクションと合わせて読むと理解が立体化する用語ページ(実在ページのみリンク):

視覚属性(読み取り精度)棒グラフ散布図折れ線グラフカラースケールヒートマップ

スモールマルチプル・前注意的処理の単独ページは未整備のため、 ここでは本文中でのみ触れている。