2025年8月7日木曜日

政党マップ(2)

政党マップ(1)からの続き

米国ではエプスタイン問題で大騒ぎらしい。トランプが煽ったエプスタイン陰謀論でMAGA信者は多いに湧き上がっていた。それが一転し,トランプ自身に火の粉が及びそうになって,エプスタイン陰謀論を否定隠ぺいし始めた。これにMAGAの一部が激怒しているとのことだ。これまでのトランプ政権最大の危機だといわれている。このMAGA騒動のおかげで日米関税交渉が妥結したという話がある。トランプはMAGAポピュリズムから逃走しているらしい。本当かどうか。

図:MAGAから逃走するトランプ(よしログから引用)


参院選も終ったことなので,上図の2次元マップにならって日本の政党を分類してみることにした。その結果を以下に示す。座標値はChatGPTが考えたものである。ただし,チームみらいのy座標は符号をこちらで変えた。彼らはポピュリズムじゃなくてエリート主義だろう。
Q(koshix):
参議院議員選挙の後の日本の政治状況を2次元グラフで表現したいと思います。
x軸正方向を右派,負方向を左派とします。
y軸正方向をエリート主義,負方向をポピュリズムとします。
各政党をその得票数に比例した面積に比例する円で表わします。政党のシンボルカラーで各政党の円を塗りつぶします。各政党の政策やニュース情報でそれぞれの政党の立ち位置を定めてください。

参考イメージとして米国の政治主張を例とした2次元グラフを添付します。(上図)

A(ChatGPT o3):
(注:フォント設定部分だけはこちらで修正している)
import math
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.font_manager as fm
from matplotlib import rcParams

# フォントの設定
font_path = '/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc'  # 適切な日本語フォントファイルを指定してください
font_prop = fm.FontProperties(fname=font_path)
rcParams['font.family'] = font_prop.get_name()


# --- データ(比例代表の得票率、Wikipedia「政党色」準拠の色) ---
data = [
    # 政党, 略称, x(右派+ 左派-), y(エリート+ ポピュリズム-), 比例得票率(%), 色(Template:政党色)
    ("自由民主党", "自民",  0.55,  0.65, 21.64, "#3CA324"),
    ("公明党",     "公明",  0.15,  0.55,  8.80, "#F55881"),
    ("立憲民主党", "立民", -0.35,  0.35, 12.50, "#184589"),
    ("国民民主党", "国民",  0.25,  0.10, 12.88, "#F8BC00"),
    ("日本維新の会","維新", 0.60, -0.25,  7.39, "#6FBA2C"),
    ("参政党",     "参政",  0.90, -0.75, 12.55, "#D85D0F"),
    ("日本保守党", "保守",  0.85, -0.50,  5.04, "#0A82DC"),
    ("日本共産党", "共産", -0.70, -0.05,  4.84, "#DB001C"),
    ("れいわ新選組","れいわ",-0.55,-0.45, 6.56, "#E4027E"),
    ("社会民主党", "社民", -0.60,  0.15,  2.06, "#01A8EC"),
    ("チームみらい","みらい",0.05, 0.30, 2.56, "#66FFCC"),
    ("NHK党",      "NHK",   0.50, -0.60,  1.15, "#F8EA0D"),
]

df = pd.DataFrame(data, columns=["政党","略称","x","y","比例得票率(%)","色"])

# 円の面積を得票率に比例させる(matplotlib の s は半径ではなく面積に相当)
SCALE = 1000  # 視認性のための調整係数。お好みで。
df["size"] = df["比例得票率(%)"] * SCALE

# 確認用にCSV出力
df.to_csv("party_positions_2025.csv", index=False, encoding="utf-8-sig")
print(df[["政党","略称","比例得票率(%)","x","y"]])

# 描画
plt.figure(figsize=(8,8), dpi=200)
plt.axhline(0, color="black", linewidth=1)
plt.axvline(0, color="black", linewidth=1)
plt.xlim(-1.05, 1.05)
plt.ylim(-1.05, 1.05)
plt.xlabel("← 左派      右派 →")
plt.ylabel("ポピュリズム ↓      エリート主義 ↑")
plt.grid(True, linewidth=0.3, alpha=0.4)

for _, r in df.iterrows():
    plt.scatter(r["x"], r["y"], s=r["size"], c=r["色"], alpha=0.35,
                edgecolors="black", linewidths=0.6)
    plt.text(r["x"], r["y"], r["略称"], ha="center", va="center",
             fontsize=9, fontweight="bold")

plt.title("2025年参議院議員選挙後の日本政治 2軸配置(比例得票率で面積・試案)")
plt.tight_layout()
plt.savefig("japan_political_2d_2025.png", bbox_inches="tight")
plt.show()

 


図:比例区得票率に比例する面積で表わした日本の政党の2軸配置

0 件のコメント: