2024年10月26日土曜日

政党マップ

YouTubeで,衆議院選挙向けの政治教養的な話をしていた。天理教の人だったので,思わずみてしまったが,意外にまともな説明だった。政党(および自民党総裁選の三候補)を政治的な対立軸と経済的な対立軸で2次元のマップ上に書いていた。前者は,国家主義・全体主義と個人主義・自由主義,後者は,資本主義・新自由主義と社会主義・共産主義というものだ。

なかなか面白かったのだけれど,最後に本人の支持政党が日本維新の会ということでがっくり。まあそんなものだ。

同じようなことをしてみようと,AIチャットボットに次の質問をいれてみる。

Q(koshix):
日本の政党の主張を分析して,経済軸と政治軸の2軸で あらわされる平面上の矩形領域で表わしたいと思います。 経済軸(X軸)は,-1から1の値をとり,左(-1)が社会主義や共産主義的な 考え方,右(+1)が資本主義や新自由主義的な考え方に対応します。 政治軸(y軸)は,-1から1の値をとり,下(-1)が自由主義や個人主義的な 考え方,上(+1)が国家主義は全体主義的な考え方に対応します。 例えば,アメリカ合衆国は (1,-1)の近傍に位置し,中華人民共和国は (-1,1)の近傍に位置します。 日本の政党としては,以下の10党を選びます。 自由民主党,公明党,日本維新の会,参政党,日本保守党, 国民民主党,立憲民主党,れいわ新撰組,社民党,日本共産党 結果は,政党名:(-0.9〜-0.6,0.4〜0,8) のように表現してください。

ChatGPT-4o,Gemini 1.5 flash,Perplexity Pro ,Claude 3.5 Sonnet で試してみるとそれらしい結果が出てきたが,まちまちだったので,適当に平均した後に主観的に修正してみる。これを図示するプログラムもPerplexity ProやChatGPT-4oに任せてみたところ,なんとか結果が得られた(日本語フォントコードはこちらで修正追加,USAとChinaも追加している)。あとは,適当なアルゴリズムで尺度さえ決まればよいということになるが,そのあたりを具体的に表現するのは難しい。ちなみに,OpenAI o1 では期待するようなそれらしい結果がでなかった。

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()

# 政党名とそれぞれの位置(Avarage?)
parties = {
    '自由民主党': ((0.1, 0.9), (0.1, 0.9)),
    '公明党': ((-0.1, 0.3), (0.0, 0.5)),
    '日本維新の会': ((0.6, 1.0), (0.2, 0.8)),
    '参政党': ((-0.2, 0.2), (0.7, 0.9)),
    '日本保守党': ((0.6, 0.9), (0.8, 1.0)),
    '国民民主党': ((0.0, 0.4), (-0.1, 0.2)),
    '立憲民主党': ((-0.6, 0.2), (-0.5, 0.1)),
    'れいわ新撰組': ((-0.7, -0.3), (-0.7, -0.3)),
    '社民党': ((-0.9, -0.5), (-0.6, -0.3)),
    '日本共産党': ((-0.9, -0.7), (-0.3, -0.1)),
    'U.S.A.': ((0.75, 1.0), (-1.0, -0.20)),
    'China': ((-1.0, -0.25), (0.75, 1.0)),
    # 修正された位置
}

# グラフの設定
plt.figure(figsize=(8, 6))

# 軸の設定
plt.axhline(0, color='black', linewidth=0.5, ls='--')  # x=0
plt.axvline(0, color='black', linewidth=0.5, ls='--')  # y=0
plt.grid(color='gray', linestyle='--', linewidth=0.5)

# 政党ごとに異なる色を設定
colors = {
    '自由民主党': 'blue',
    '公明党': 'yellow',
    '日本維新の会': 'green',
    '参政党': 'orange',
    '日本保守党': 'purple',
    '国民民主党': 'brown',
    '立憲民主党': 'cyan',
    'れいわ新撰組': 'magenta',
    '社民党': 'pink',
    '日本共産党': 'red',
    'U.S.A.': 'gray',
    'China': 'gray',
}

# データプロット
for party, ((x_min, x_max), (y_min, y_max)) in parties.items():
    rect = patches.Rectangle(
        (x_min, y_min),
        x_max - x_min,
        y_max - y_min,
        alpha=0.3,
        color=colors[party],  # 色を設定
        label=party
    )
    plt.gca().add_patch(rect)
    plt.text((x_min + x_max) / 2, (y_min + y_max) / 2, party,
             fontsize=9, ha='center', va='center')

# 軸の範囲
plt.xlim(-1.1, 1.1)
plt.ylim(-1.1, 1.1)

# タイトル
plt.title('日本の政党の経済軸と政治軸')
plt.xlabel('経済軸 (左: 社会主義, 右: 資本主義)')
plt.ylabel('政治軸 (下: 自由主義, 上: 国家主義)')
plt.grid()

plt.show()


図:日本の政党マップ(ひとつのイメージ)

[2]政治的スペクトル(Wikipedia)

0 件のコメント: