R パッケージ
一覧library(geofacet)
library(ggrepel)
library(rmapshaper)
library(rnaturalearth)
library(sf)
library(tidyverse)
library(zipangu)
ggplot2
} で地図をプロットする方法は様々パッケージ名 | 詳細 |
---|---|
{rnaturalearth } |
:Natural Earth のデータ(国や海域の地理空間データを提供) |
{rnaturalearthdata } |
:Natural Earth のデータ(高解像度) |
・パッケージ管理ツール (packman
パッケージ)を使うと
install.packges()
コマンドを使わなくてもパッケージをインストールしロードできる
{pacman}
パッケージの p_load()
関数を使って
3 つのパッケージを同時にダウンロードする{naturalearth}
が無償で提供する ne_countries()
関数scale
と retunrclass
scale
の設定:scale = "small"
と指定scale = "medium"
と指定scale = "large"
と指定retunrclass
の設定:reutrnclass = "sf"
と指定sf
クラスで読み込んでみるreturnclass = "sf"
では、地理座標系の
sf オブジェクト
を指定sf オブジェクト
をマッピングすることができるworld_map
)
の中の変数と型をチェック[1] "sf" "data.frame"
data.frame
と
sf
の 2 つworld_map
のクラスがdata.frame
あることworld_map
が含む変数名とその数をチェック [1] "featurecla" "scalerank" "labelrank" "sovereignt" "sov_a3"
[6] "adm0_dif" "level" "type" "tlc" "admin"
[11] "adm0_a3" "geou_dif" "geounit" "gu_a3" "su_dif"
[16] "subunit" "su_a3" "brk_diff" "name" "name_long"
[21] "brk_a3" "brk_name" "brk_group" "abbrev" "postal"
[26] "formal_en" "formal_fr" "name_ciawf" "note_adm0" "note_brk"
[31] "name_sort" "name_alt" "mapcolor7" "mapcolor8" "mapcolor9"
[36] "mapcolor13" "pop_est" "pop_rank" "pop_year" "gdp_md"
[41] "gdp_year" "economy" "income_grp" "fips_10" "iso_a2"
[46] "iso_a2_eh" "iso_a3" "iso_a3_eh" "iso_n3" "iso_n3_eh"
[51] "un_a3" "wb_a2" "wb_a3" "woe_id" "woe_id_eh"
[56] "woe_note" "adm0_iso" "adm0_diff" "adm0_tlc" "adm0_a3_us"
[61] "adm0_a3_fr" "adm0_a3_ru" "adm0_a3_es" "adm0_a3_cn" "adm0_a3_tw"
[66] "adm0_a3_in" "adm0_a3_np" "adm0_a3_pk" "adm0_a3_de" "adm0_a3_gb"
[71] "adm0_a3_br" "adm0_a3_il" "adm0_a3_ps" "adm0_a3_sa" "adm0_a3_eg"
[76] "adm0_a3_ma" "adm0_a3_pt" "adm0_a3_ar" "adm0_a3_jp" "adm0_a3_ko"
[81] "adm0_a3_vn" "adm0_a3_tr" "adm0_a3_id" "adm0_a3_pl" "adm0_a3_gr"
[86] "adm0_a3_it" "adm0_a3_nl" "adm0_a3_se" "adm0_a3_bd" "adm0_a3_ua"
[91] "adm0_a3_un" "adm0_a3_wb" "continent" "region_un" "subregion"
[96] "region_wb" "name_len" "long_len" "abbrev_len" "tiny"
[101] "homepart" "min_zoom" "min_label" "max_label" "label_x"
[106] "label_y" "ne_id" "wikidataid" "name_ar" "name_bn"
[111] "name_de" "name_en" "name_es" "name_fa" "name_fr"
[116] "name_el" "name_he" "name_hi" "name_hu" "name_id"
[121] "name_it" "name_ja" "name_ko" "name_nl" "name_pl"
[126] "name_pt" "name_ru" "name_sv" "name_tr" "name_uk"
[131] "name_ur" "name_vi" "name_zh" "name_zht" "fclass_iso"
[136] "tlc_diff" "fclass_tlc" "fclass_us" "fclass_fr" "fclass_ru"
[141] "fclass_es" "fclass_cn" "fclass_tw" "fclass_in" "fclass_np"
[146] "fclass_pk" "fclass_de" "fclass_gb" "fclass_br" "fclass_il"
[151] "fclass_ps" "fclass_sa" "fclass_eg" "fclass_ma" "fclass_pt"
[156] "fclass_ar" "fclass_jp" "fclass_ko" "fclass_vn" "fclass_tr"
[161] "fclass_id" "fclass_pl" "fclass_gr" "fclass_it" "fclass_nl"
[166] "fclass_se" "fclass_bd" "fclass_ua" "geometry"
pop_est
」があるのでこれを使う geom_sf()
幾何オブジェクトを使って世界地図を出力してみるworld_map
のデータ型式が「データフレーム形式」pop_est
(各国の人口データ)に応じて
geom_sf()
内に fill = pop_est
でマッピングできるworld_map %>%
ggplot() +
geom_sf(aes(fill = pop_est)) +
# 人口が少ない国は yellow に、多い国は brown3 色とする
scale_fill_gradient(low = "yellow", high = "green") +
labs(fill = "人口") +
theme_void(base_family = "HiraKakuProN-W3")
ne_countries()
内に continent
引数を指定asia_map
という名のオブジェクトとして格納してみるasia_map <- ne_countries(scale = "medium",
continent = "Asia",
returnclass = "sf")
asia_map |>
ggplot() +
geom_sf() +
theme_void()
asia_map |>
ggplot() +
geom_sf(aes(fill = pop_est)) +
scale_fill_gradient(low = "yellow", high = "green") +
labs(fill = "人口") +
theme_minimal() +
theme_void(base_family = "HiraKakuProN-W3")
ここでは「アジア大陸」から表示規模を「東アジア」に絞って所得規模別地図を描いてみる
まず、東アジアにおける各国の所得規模別地図を描いてみる
asia_map <- ne_countries(scale = "medium",
continent = "Asia",
returnclass = "sf")
asia_map %>%
ggplot() + # 所得グループで色塗り
geom_sf(aes(fill = income_grp)) +
theme_void() +
labs(fill = "Income Group")
filter()
関数を使って
subregion
列を基準に抽出するasia_map %>%
filter(subregion == "Eastern Asia") %>% # 「東アジア」に絞る
ggplot() +
geom_sf(aes(fill = income_grp)) +
theme_void() +
labs(fill = "Income Group")
europe_map <- ne_countries(scale = "medium",
continent = "Europe",
returnclass = "sf")
europe_map |>
ggplot() +
geom_sf() +
theme_void()
coord_sf()
関数で座標系を調整し、ヨーロッパの表示範囲を絞ってみるxlim
で、緯度は ylim
で指定world_map %>%
ggplot() +
geom_sf(aes(fill = pop_est)) +
scale_fill_gradient(low = "yellow", high = "green") +
labs(fill = "人口") +
coord_sf(xlim = c(-10, 45), ylim = c(35, 60)) +
theme_minimal(base_family = "HiraKakuProN-W3") +
theme(legend.position = "bottom")
ロシアとドイツの人口が多いことは分かるが、このマップからはあまり顕著な違いが分からない
人口を分割している単位をもう少し細分化してみる
world_map2 <- ne_countries(scale = "medium", returnclass = "sf") %>%
mutate(Population = case_when(pop_est < 30000000 ~ "3千万未満",
pop_est < 40000000 ~ "4千万未満",
pop_est < 50000000 ~ "5千万未満",
pop_est < 60000000 ~ "6千万未満",
pop_est < 70000000 ~ "7千万未満",
pop_est < 80000000 ~ "8千万未満",
TRUE ~ "8千万以上"),
Population = factor(Population,
levels = c("3千万未満", "4千万未満", "5千万未満",
"6千万未満", "7千万未満", "8千万未満",
"8千万以上")))
world_map2 %>%
ggplot() +
geom_sf(aes(fill = Population)) +
scale_fill_brewer(palette = "green", drop = FALSE) +
labs(fill = "人口") +
coord_sf(xlim = c(-10, 45), ylim = c(35, 60)) +
geom_label_repel(
data = st_crop(world_map2,
c(xmin = -10, xmax = 45, ymin = 35, ymax = 60)),
aes(label = name, geometry = geometry),
size = 11,
stat = "sf_coordinates",
min.segment.length = 0
) +
theme_minimal(base_family = "HiraKakuProN-W3") +
theme(legend.position = "bottom",
axis.text = element_text(size = 30),
legend.title = element_text(size = 32),
legend.text = element_text(size = 32),
legend.key.size = unit(1, "cm"),
legend.key.width = unit(3,"cm"))
上のマップを描く上での注意 1. R,
RStudio, XQuartzを最新版にバージョンアップする
2. 次の手順に従ってパッケージを最新バージョンにアップデートする
・Packages
をクリック
・Update
をクリック
・画面左下の Select All
をクリック
・画面右下の Install Updates
をクリック
ggplot2
} で地図をプロットする方法は様々パッケージ名 | 詳細 |
---|---|
{rnaturalearth } |
:Natural Earth のデータ(国や海域の地理空間データを提供) |
{rnaturalearthdata } |
:Natural Earth のデータ(高解像度) |
・パッケージ管理ツール (packman
パッケージ)を使うと
install.packges()
コマンドを使わなくてもパッケージをインストールしロードできる
{pacman}
パッケージの p_load()
関数を使って
3 つのパッケージを同時にダウンロードするne_countries
に country
引数を指定するne_countries(scale = "small",
country = "Japan",
returnclass = "sf") %>%
ggplot() +
geom_sf() +
theme_void()
scale = "medium"
と指定してみるne_countries(scale = "medium",
country = "Japan",
returnclass = "sf") %>%
ggplot() +
geom_sf() +
theme_void()
rnaturalearthhires
}パッケージをインストールし、読み込むp_load()
でなく
p_load_gh()
を使う理由
・{rnaturalearthhires
}は CRAN
に登録されていない(2022年9月2日時点)
・GitHub
の ropensciレポジトリーのみで公開
→ {pacman
}パッケージの p_load()
関数でなく、p_load_gh()
関数を使う
ne_states()
関数を使うsf
df_jpn_map <- ne_states("Japan",
returnclass = "sf")
df_jpn_map %>%
ggplot() +
geom_sf() +
theme_void()
ne_states()
関数を使って読み込んだ日本地図データ
df_jpn_map
に都道府県別の人口データは含まれていないここでは2022年の「都道府県人口・面積・人口密度ランキングを加工したもの
(jpn_pop.csv
)
を使う
csv
ファイルを読み込むために必要な readr
パッケージをロードする
→ tidyverse
パッケージをロードすると、自動的に
readr
パッケージもロードされる
都道府県別人口データ (jpn_pop.csv
)
をダウンロード
→ R プロジェクトフォルダ内に data
フォルダを作り、その中に入れる
・RStudio
上で人口データ (jpn_pop.csv
)
を読み込み、df_jpn_pop
と名前をつける
pop_2016
は2016年10月1日時点での人口pop_2021
は2021年10月1日時点での人口diff
は2011年から2021年の間の人口増減率diff
の計算式は次のとおり\[人口増減率= \frac{人口増減(2021年10月−2016年10月)}{2016年10月現在人口}×100\]
df_jpn_map
と「日本人口データ」 df_jpn_pop
を
紐付けるためマージする必要があるdf_jpn_pop
の中を確認name
, pref
,
pop_2016
,pop_2021
, diff
の 5
つdf_jpn_map
の中を確認 [1] "featurecla" "scalerank" "adm1_code" "diss_me" "iso_3166_2"
[6] "wikipedia" "iso_a2" "adm0_sr" "name" "name_alt"
[11] "name_local" "type" "type_en" "code_local" "code_hasc"
[16] "note" "hasc_maybe" "region" "region_cod" "provnum_ne"
[21] "gadm_level" "check_me" "datarank" "abbrev" "postal"
[26] "area_sqkm" "sameascity" "labelrank" "name_len" "mapcolor9"
[31] "mapcolor13" "fips" "fips_alt" "woe_id" "woe_label"
[36] "woe_name" "latitude" "longitude" "sov_a3" "adm0_a3"
[41] "adm0_label" "admin" "geonunit" "gu_a3" "gn_id"
[46] "gn_name" "gns_id" "gns_name" "gn_level" "gn_region"
[51] "gn_a1_code" "region_sub" "sub_code" "gns_level" "gns_lang"
[56] "gns_adm1" "gns_region" "min_label" "max_label" "min_zoom"
[61] "wikidataid" "name_ar" "name_bn" "name_de" "name_en"
[66] "name_es" "name_fr" "name_el" "name_hi" "name_hu"
[71] "name_id" "name_it" "name_ja" "name_ko" "name_nl"
[76] "name_pl" "name_pt" "name_ru" "name_sv" "name_tr"
[81] "name_vi" "name_zh" "ne_id" "name_he" "name_uk"
[86] "name_ur" "name_fa" "name_zht" "FCLASS_ISO" "FCLASS_US"
[91] "FCLASS_FR" "FCLASS_RU" "FCLASS_ES" "FCLASS_CN" "FCLASS_TW"
[96] "FCLASS_IN" "FCLASS_NP" "FCLASS_PK" "FCLASS_DE" "FCLASS_GB"
[101] "FCLASS_BR" "FCLASS_IL" "FCLASS_PS" "FCLASS_SA" "FCLASS_EG"
[106] "FCLASS_MA" "FCLASS_PT" "FCLASS_AR" "FCLASS_JP" "FCLASS_KO"
[111] "FCLASS_VN" "FCLASS_TR" "FCLASS_ID" "FCLASS_PL" "FCLASS_GR"
[116] "FCLASS_IT" "FCLASS_NL" "FCLASS_SE" "FCLASS_BD" "FCLASS_UA"
[121] "FCLASS_TLC" "geometry"
unique()
関数を使って df_jpn_pop
の
name
値を確認してみる [1] "Aichi" "Akita" "Aomori" "Chiba" "Ehime" "Fukui"
[7] "Fukuoka" "Fukushima" "Gifu" "Gunma" "Hiroshima" "Hokkaido"
[13] "Hyogo" "Ibaraki" "Ishikawa" "Iwate" "Kagawa" "Kagoshima"
[19] "Kanagawa" "Kochi" "Kumamoto" "Kyoto" "Mie" "Miyagi"
[25] "Miyazaki" "Nagano" "Nagasaki" "Nara" "Niigata" "Oita"
[31] "Okayama" "Okinawa" "Osaka" "Saga" "Saitama" "Shiga"
[37] "Shimane" "Shizuoka" "Tochigi" "Tokushima" "Tokyo" "Tottori"
[43] "Toyama" "Wakayama" "Yamagata" "Yamaguchi" "Yamanashi"
unique()
関数をつかって df_jpn_map
の
name
の値を確認してみる [1] "Kagoshima" "Ōita" "Fukuoka" "Saga" "Nagasaki" "Kumamoto"
[7] "Miyazaki" "Tokushima" "Kagawa" "Ehime" "Kōchi" "Shimane"
[13] "Yamaguchi" "Tottori" "Hyōgo" "Kyōto" "Fukui" "Ishikawa"
[19] "Toyama" "Niigata" "Yamagata" "Akita" "Aomori" "Iwate"
[25] "Miyagi" "Fukushima" "Ibaraki" "Chiba" "Tokyo" "Kanagawa"
[31] "Shizuoka" "Aichi" "Mie" "Wakayama" "Ōsaka" "Okayama"
[37] "Hiroshima" "Hokkaidō" "Okinawa" "Gunma" "Nagano" "Tochigi"
[43] "Gifu" "Shiga" "Saitama" "Yamanashi" "Nara"
setdiff()
関数を使って、人口データ
(df_jpn_pop
) の name の値とマップデータ
(df_jpn_map
) の name の値が同一かどうかチェック[1] "Ōita" "Kōchi" "Hyōgo" "Kyōto" "Ōsaka" "Hokkaidō"
[1] "Hokkaido" "Hyogo" "Kochi" "Kyoto" "Oita" "Osaka"
df_jpn_map
の name
の値を次のように修正するdf_jpn_map <- df_jpn_map |>
mutate(name = str_replace_all(name,
c("Ōita" = "Oita", # "Ōita" を "Oita" に変換
"Hyōgo" = "Hyogo",
"Kyōto" = "Kyoto",
"Ōsaka" = "Osaka",
"Hokkaidō" = "Hokkaido",
"Kōchi" = "Kochi")
))
setdiff()
関数を使って、人口データ
(df_jpn_pop
) の name の値とマップデータ
(df_jpn_map
) の name の値が同一かどうかチェックcharacter(0)
character(0)
df_map_pop
と
df_jpn_pop
) に共通する変数 name
は「変数名」(name
) と「値」(Aichi, Akita...
)
が同じになった・df_jpn_map
と df_jpn_pop
を
name
を手がかりにデータをマージして、df_jpn
と名前を付ける
・地理データの標準使用に対応するため、マージしたデータは
st_as_sf()
を使って sfオブジェクト
に変換する
- sfパッケージ
を読み込む
・データフレームを確認する
変数名 | 説明 |
1.name |
都道府県名(英語) |
2.pref |
都道府県名(日本語) |
3.pop_2016 |
2016年10月1日時点での人口 |
4.pop_2021 |
2021年10月1日時点での人口 |
5.diff |
2011〜2021の人口増減率(%) |
6.geometry |
地図情報 |
df_jpn
を使って人口の多い都道府県を濃い緑で表示するマップを描いてみるdf_jpn %>%
ggplot() +
geom_sf(aes(fill = pop_2021)) +
scale_fill_distiller(name = "人口",
palette = "Greens", # 任意の色を指定
direction = 1) +
labs(fill = "人口") +
theme_void(base_family = "HiraginoSans-W3", base_size = 9) +
ggtitle("都道府県別の人口規模(2021年10月1日)") +
theme(plot.title = element_text(size = 15))
factor
化してから、そのカテゴリーに応じて色塗りをする Min. 1st Qu. Median Mean 3rd Qu. Max.
548562 1057844 1576074 2670279 2670336 14011487
stem()
関数を使って、pop_2021
の分布を確認する
The decimal point is 6 digit(s) to the right of the |
0 | 5777888999
1 | 01111223333456788999
2 | 0023689
3 | 6
4 |
5 | 124
6 | 3
7 | 35
8 | 8
9 | 2
10 |
11 |
12 |
13 |
14 | 0
# 人口規模・都道府県別日本地図 (2021)
df_jpn %>%
mutate(pop_2021a = case_when(pop_2021 >= 8000000 ~ "800万人以上",
pop_2021 >= 5000000 ~ "500万人以上",
pop_2021 >= 2000000 ~ "200万人以上",
pop_2021 >= 1000000 ~ "100万人以上",
TRUE ~ "100万人未満"),
pop_2021a = factor(pop_2021a, ordered = TRUE,
levels = c(
"800万人以上",
"500万人以上",
"200万人以上",
"100万人以上",
"100万人未満"))) %>%
ggplot() +
geom_sf(aes(fill = pop_2021a)) +
labs(fill = "人口") +
theme_void(base_family = "HiraginoSans-W3", base_size = 9) +
ggtitle("都道府県別 人口規模(2021年10月1日)") +
theme(plot.title = element_text(size = 15))
# 人口増減・都道府県別日本地図 (2016-2021)
df_jpn %>%
ggplot() +
geom_sf(aes(fill = diff)) +
scale_fill_distiller(name = "人口増減(%)",
palette = "RdBu", # 任意の色を指定
direction = 1) +
labs(fill = "人口") +
theme_void(base_family = "HiraginoSans-W3", base_size = 9) +
ggtitle("都道府県別 人口の増減(2016年〜2021年)") +
theme(plot.title = element_text(size = 15))
df_pop
)board <- pins::board_url(
c(df_pop = "https://raw.githubusercontent.com/uribo/220828ism_ws/main/df-ssdse-b/data.rds"))
df_pop <-
board |>
pins::pin_download("df_pop") |>
readr::read_rds()
jp_prefs_grid1
)zipangu
}パッケージを使って都道府県情報をダウンロードするjp_prefs_grid1 <-
jp_prefs_grid1 |>
left_join(
jpnprefs |>
select(jis_code, prefecture = prefecture_kanji),
by = c("code_pref_jis" = "jis_code"))
plt_1 <- df_pop |>
ggplot() +
aes(year, population) +
geom_line() +
theme_gray(base_size = 6,
base_family = "HiraKakuProN-W3",
) +
facet_geo(~ prefecture,
grid = "jp_prefs_grid1",
scales = "free_y") +
theme(axis.text.x = element_text(angle = 80, # 40度回転
vjust = 1,
hjust = 1)) +
ggtitle("都道府県別人口の増減(2008-2019)") +
theme(plot.title = element_text(size = 15))
plt_1
・縦軸の最大値が都道府県ごとに異なるので、解釈する際には注意が必要
例えば東京の人口の最大値は約1392万人、鳥取の最大値は約56万人
マップの保存
fig
フォルダを R プロジェクトフォルダ内に作る
作成したマップを fig
フォルダに保存する
df_ldp_vs
)読む込むデータは
hr96-21.csv
ではないことに注意
# A tibble: 6 × 23
year pref prefecture ku kun wl rank nocand seito j_name gender
<dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1996 愛知 愛知県 aichi 1 1 1 7 新進 河村た… male
2 1996 愛知 愛知県 aichi 1 0 2 7 自民 今枝敬… male
3 1996 愛知 愛知県 aichi 1 0 3 7 民主 佐藤泰… male
4 1996 愛知 愛知県 aichi 1 0 4 7 共産 岩中美… female
5 1996 愛知 愛知県 aichi 1 0 5 7 文化フォ… 伊東マ… female
6 1996 愛知 愛知県 aichi 1 0 6 7 国民党 山田浩 male
# ℹ 12 more variables: name <chr>, previous <dbl>, age <dbl>, exp <chr>,
# status <dbl>, vote <dbl>, voteshare <dbl>, eligible <chr>, turnout <chr>,
# seshu_dummy <chr>, jiban_seshu <chr>, nojiban_seshu <chr>
hr96_21_ken.csv
は1996年に衆院選挙に小選挙区が導入されて以来実施された 9
回の衆議院選挙(1996, 2000, 2003, 2005, 2009, 2012, 2014, 2017,
2021)の結果のデータhr
に含まれる変数名を表示させる [1] "year" "pref" "prefecture" "ku"
[5] "kun" "wl" "rank" "nocand"
[9] "seito" "j_name" "gender" "name"
[13] "previous" "age" "exp" "status"
[17] "vote" "voteshare" "eligible" "turnout"
[21] "seshu_dummy" "jiban_seshu" "nojiban_seshu"
hr
には 23 個の変数が入っている変数名 | 詳細 |
---|---|
year |
選挙年 (1996-2017) |
pref |
都道府県名(例:宮城) |
prefecture |
都道府県名(例:宮城県) |
ku |
小選挙区名 |
kun |
小選挙区 |
rank |
当選順位 |
wl |
選挙の当落: 1 = 小選挙区当選、2 = 復活当選、0 = 落選 |
nocand |
立候補者数 |
seito |
候補者の所属政党 |
j_name |
候補者の氏名(日本語) |
name |
候補者の氏名(ローマ字) |
previous |
これまでの当選回数(当該総選挙結果は含まない) |
gender |
立候補者の性別: “male”, “female” |
age |
立候補者の年齢 |
exp |
立候補者が使った選挙費用(総務省届け出) |
status |
候補者のステータス: 0 = 非現職、1 現職、2 = 元職 |
vote |
得票数 |
voteshare |
得票率 (%) |
eligible |
小選挙区の有権者数 |
turnout |
小選挙区の投票率 (%) |
seshu_dummy |
世襲候補者ダミー: 1 = 世襲、0 = 非世襲(地盤世襲 or 非世襲) |
jiban_seshu |
地盤の受け継ぎ元の政治家の氏名と関係 |
nojiban_seshu |
世襲元の政治家の氏名と関係 |
voteshare
) を都道府県
(prefecture
) ごとに平均するdf_ldp_vs <- hr |>
filter(seito == "自民") |>
group_by(year, prefecture) |>
summarize(ldp_vs = mean(voteshare))
jp_prefs_grid1
)zipangu
}パッケージを使って、都道府県情報をダウンロードするjp_prefs_grid1 <-
jp_prefs_grid1 |>
left_join(
zipangu::jpnprefs |>
select(jis_code, prefecture = prefecture_kanji),
by = c("code_pref_jis" = "jis_code"))
plt_2 <- df_ldp_vs |>
ggplot() +
aes(year, ldp_vs) +
geom_line() +
theme_gray(base_size = 6, base_family = "HiraKakuProN-W3") +
facet_geo(~ prefecture,
grid = "jp_prefs_grid1",
scales = "free_y") +
theme(axis.text.x = element_text(angle = 40, # 40度回転
vjust = 1,
hjust = 1)) +
ggtitle("総選挙での自民党候補者の得票率平均 (1996-2021)") +
theme(plot.title = element_text(size = 15))
plt_2
・縦軸の最大値が都道府県ごとに異なるので、解釈する際には注意が必要
例えば山口県の最大値は約73%、沖縄の最大値は約21%
マップの保存
fig
フォルダを R プロジェクトフォルダ内に作る
作成したマップを fig
フォルダに保存する
Q6.1:
「2.1.4 都道府県人口別に日本地図を描く(2021年)
」を参考にして、2016年における
都道府県別の人口規模を色分けした日本地図を描きなさい。
Q6.2:
「3.2 総選挙での自民党得票率を時系列で表示
」を参考にして、1996年から2021年までの総選挙における、当選者(小選挙区当選者と復活当選者)の平均年齢を都道府県ごとに計算しなさい。
Q6.3: 「3.2 総選挙での自民党得票率を時系列で表示」を参考にして、1996年から2021年までの総選挙における、当選者(小選挙区当選者と復活当選者)の平均年齢を都道府県ごとに「地図っぽい表現」でマッピングし可視化しなさい。
参考文献F@N Communications, Inc.
)
からご助言いただいた