49回衆院選が間近に迫ってきたため、Rのsfパッケージで選挙区の色ぬりをしてみました。
データの紹介
今回使用したポリゴンデータはこちらからDLさせて頂きました。パブリック・ドメインで高精度なポリゴンデータが手に入るのはすごい。
今回作るもの
あまりみたことがない塗り絵をしたかったので、前回(48回)総選挙で選挙区で敗れたものの比例復活した議員がいる選挙区を図示したいと思います。比例復活した議員のデータは、以前衆院HPと政治山から集めてきたものをそのまま使用します。
コード
最初に
まず、今回使用するライブラリを読み込み、その後選挙区地図情報が入っているshpデータをよみこみます。
library(tidyverse)
library(sf)
library(ggsflabel) #ggplotのラベル表示に使用
library(gghighlight) #ggplotのハイライトに使用
#今回使用するshpファイル
map1 <- st_read("senkyoku289polygon_detailed/senkyoku289polygon_detailed.shp")
#今回使用する比例復活議員に関するデータ
giin_info_data <- read_csv("data/giin_info_data.csv")
#データの確認
head(giin_info_data)
# A tibble: 117 x 3
ken ku party
<int> <int> <chr>
1 23 12 自由民主党
2 22 1 無所属
3 8 6 立憲民主党
4 8 5 国民民主党
5 27 9 日本維新の会
6 1 5 立憲民主党
7 23 3 自由民主党
8 15 1 無所属
9 13 23 立憲民主党
10 40 2 立憲民主党
# … with 107 more rows
kenは都道府県番号、kuは選挙区番号です。partyは48回総選挙時その選挙区で選挙戦を戦い比例復活した議員が所属している政党(2021/2/20現在)です。
sfデータと比例データの結合
次に、sfデータに比例復活に関するデータを接合します。他にエレガントな方法が思いつかなかったので、sfデータに変数を2つ作成しforループをまわしています。
map1$PR <- "なし" #比例復活有無データを格納する空の変数
map1$party <- "なし" #比例復活政党データを格納する空の変数
for(i in 1:nrow(giin_info_data)){
ku.i <-giin_info_data$ku[i] #i番目の都道府県番号
ken.i <-giin_info_data$ken[i] #i番目の選挙区番号
party.i <- giin_info_data$party[i] #i番目の所属政党
#ken.iとku.iに合致する選挙区は"あり"に変更する
map4_GE17$PR[map4_GE17$ken == ken.i & map4_GE17$ku == ku.i] <- "あり"
#ken.iとku.iに合致する選挙区は当該政党に名称を変更する
map4_GE17$party[map4_GE17$ken == ken.i & map4_GE17$ku == ku.i] <- party.i
}
次に、地図にプロットするラベルを作成します。
#Pref_nameは都道府県コード順に都道府県名称を並べたデータフレーム
Pref_name <- read_csv("data/Pref_name.csv")
#N県M区という形のラベルを作成
map4_GE17 <-
map4_GE17 %>%
mutate(ku_ken = str_c(Pref_name$Pref[ken], as.character(ku), "区", sep = ""))
今回使用するシェープファイルは複数の行で1つの選挙区を構成する場合があり、全部のラベルを表示するとみにくくなってしまうので、一番上の行のみ表示するように変数を作成します。
map4_GE17 <-
map4_GE17 %>%
group_by(ken,ku) %>% #選挙区ごとにグループ化
mutate(number.d = 1:length(ku)) %>% #1~最後までの番号を割り振る
ungroup()
最後にggplotでプロットします。全部のコードを書くのが大変なので、北関東ブロックのコードだけ書いておきます。
g_kitakanto <-
map4_GE17 %>%
filter(ken %in% c(8,9,10,11)) %>% #北関東の県のみ抽出
mutate(ku.name = if_else(number.d == 1 , ku_ken, "")) %>% #number.dが1のみlabelをプロット
ggplot(aes(fill = party)) + #partyで地図を色分け
geom_sf() + #sfのプロット
gghighlight(PR != "なし" ) +
geom_sf_label_repel(aes(label = ku.name), #ラベルの作成
family = "HiraKakuPro-W3", colour = "white", size = 5) +
theme_bw(base_family = "HiraKakuProN-W3") +
scale_fill_manual(values = c(自由民主党 = "#e83122", 立憲民主党 = "#013e92", 国民民主党 = "#f6b800")) +
theme(legend.text = element_text(size = 30),
plot.title = element_text(size = 30)) +
labs(fill = "", title = "比例復活当選議員がいる選挙区(北関東)", x = "", y = "")
plot(g_kitakanto)
結果
まず、全国レベルの結果はこちらです。(沖縄だけ除外しています)
次に、比例代表の選挙区ごとにみていきます。
北海道
北海道1区をのぞいて全部立憲民主党の議員になっています。自民党は前回比例北海道ブロックで3議席獲得しましたが、2名は比例単独候補者なので比例復活候補は北海道1区のみです。
東北
(以下選挙区名はtextではなくlabelで記載しています)
東北で野党衆院議員がいないのは青森・山形の2県です。福島県は野党が強いこともあり5区中3区に比例復活議員がいます。
北関東
北関東ブロックでは全国唯一国民民主党の比例復活議員がいます。栃木県には比例復活議員はいないようです。
南関東
千葉県は4区を除いて自民党が小選挙区をとっていますが、立憲民主党は都市部を中心に6人も比例復活しています。
神奈川6区は関東で唯一日本維新の会が比例復活で議席を手にしています。
東京
東京は実に11名の比例復活議員を抱えています。15区の無所属議員は前回希望の党から比例復活した柿沢未途議員です。
北陸信越
北陸は自民党が強い地域ですが、石川・福井には立憲民主党の議員がいるようです。新潟1区の無所属議員は前回自民党から比例復活した石崎徹議員です。
東海
愛知は野党が強い地域であり、自民党議員が多く比例復活しています。
静岡1区の無所属議員は立憲民主党から比例復活した青山雅幸議員です。
近畿
大阪は日本維新の会の勢力が強く、維新から比例復活した議員が4名います。滋賀県には比例復活議員はいないようです。京都5区の無所属議員は前回希望の党から比例復活した井上一徳議員です。
中国
山口・鳥取には比例復活議員がいないようです。岡山1区の無所属議員は立憲民主党から比例復活した高井崇志議員です。
九州(沖縄以外)
佐賀は野党、大分は全選挙区から比例復活議員が誕生しているため現職衆院議員が選挙区数の2倍いることになります。逆に鹿児島と宮崎には比例復活議員がいないようです。大分1区の無所属議員は希望の党から比例復活した吉良州司議員です。
沖縄
沖縄1区には、無所属の下地幹郎議員(前回は日本維新の会から比例復活)、自民党の國場幸之助議員の2名が比例復活で選出されています。