NHKが,出口調査で得た年代別の主要候補者支持率(それほど正確ではない)を出している。これを用いて,各年代区分のサイズを投票率×年代人口で正規化した人口比例面積表示のグラフを描いた。
生成AIを使ってプログラムを作ろうとしたが,(1) Pythonでは違うロジックの図がでてきたので,修正をあきらめた。(2) ChatGPTで,設定を簡単にした説明を入れ,Juliaプログラミングをすると,概ねできたが途中でつまづいた。(3) Claude 3.5 Sonnetで日本語の修正を含めて,最終版まで行き着いた。やはり,プログラミング経験なしでスイスイとはいかないのだ。
最初のChatGPTへの入力と,最終のJuliaコードを示す。
Q(koshix):次のように正方形の領域を分割して色を塗るJuliaプログラムをつくってください。(1) 6個の世代人口データがあります。この値に比例して正方形を水平線で分割します。 つまり,上から,20代,30代,40代,50代,60代,70代の人口に比例した長方形 ができます。(2) 各長方形を,n人の候補者(A,B,C,...)の支持率をつかって垂線で分割します。 つまり,各年代ごとに,Aの支持率,Bの支持率,Cの支持率,その他の支持率と なります。これらの支持率の和は100%であり,それが正方形の横軸の長さになります。(3) 各年代のAの支持率のブロックは色#28A745,Bの支持率のブロックは色#F39C12, Cの支持率のブロックは色#3498DB,その他の支持率のブロックは色#CA8888 とします。(4) 各世代の人口数は,{48,68,100,133,132,117}とします。(5) 20代の支持率は,{0.27,0.44,0.11,0.18}とします。30代の支持率は,{0.30,0.31,0.18,0.21}とします。40代の支持率は,{0.36,0.32,0.15,0.16}とします。50代の支持率は,{0.42,0.25,0.16,0.16}とします。60代の支持率は,{0.41,0.22,0.26,0.11}とします。70代の支持率は,{0.51,0.11,0.31,0.08}とします。A(Claude 3.5 Sonnet):using CairoMakie# データの準備populations = [48, 68, 100, 133, 132, 117]total_population = sum(populations)support_rates = [[0.27, 0.44, 0.11, 0.18], # 20代[0.30, 0.31, 0.18, 0.21], # 30代[0.36, 0.32, 0.15, 0.17], # 40代[0.42, 0.25, 0.16, 0.17], # 50代[0.41, 0.22, 0.26, 0.11], # 60代[0.51, 0.11, 0.31, 0.07] # 70代]colors = ["#28A745", "#F39C12", "#3498DB", "#CA8888"]age_labels = ["18-", "30-", "40-", "50-", "60-", "70-"]# プロットの作成fig = Figure(size=(800, 600))ax = Axis(fig[1, 1], ylabel="人口割合", xlabel="支持率")current_y = 0.0for (i, pop) in enumerate(populations)segment_height = pop / total_populationrates = support_rates[i]current_x = 0.0for (j, rate) in enumerate(rates)poly!(ax, [current_x, current_x+rate, current_x+rate, current_x],[current_y, current_y, current_y+segment_height, current_y+segment_height],color=colors[j])current_x += rateend# 年代ラベルを追加text!(ax, -0.05, current_y + segment_height/2, text=age_labels[i],align=(:right, :center), fontsize=14)current_y += segment_heightend# 軸の設定ax.yticks = (collect(0:0.2:1), ["0%", "20%", "40%", "60%", "80%", "100%"])ax.xticks = (collect(0:0.2:1), ["0%", "20%", "40%", "60%", "80%", "100%"])# 凡例の追加elements = [PolyElement(polycolor = c) for c in colors]Legend(fig[1, 2], elements, ["小池百合子", "石丸伸二", "蓮舫", "その他"],"候補者", tellheight=false, tellwidth=true)# タイトルの追加Label(fig[0, :], "年代別支持率", fontsize = 24)# グラフの表示display(fig)
図:東京都知事選年代別支持率(人口比例面積表示)
50代以上が6割,40代以下が4割なので,若年層の石丸効果はそれほど効かず,中年層が実数を担っている。蓮舫は60代以上でしっかりと受け止められているが,若年中年層にはまったく浸透していない。
P. S. NHKの年代別支持率のグラフをキャプチャーして,画像ファイルを生成AIに読み込ませて,各候補の支持率%の数値を読み取ろうとした。それらしい数字は出てくるのだけれど,残念ながら,正しい答えは得られなかった。仕方がないので,プリントアウトして,15cmのプラスチック物差しで測って,エクセルに入力して最終的なデータを導いた。
P. P. S. 奥村先生のところに関連するグラフなどがあった。
[1]2024年の東京都知事選挙(奥村晴彦)
0 件のコメント:
コメントを投稿