凡例の調整法 | R, GIS
この記事では、Rで凡例(はんれい)を調整する方法について説明します。
記事の概要です。
前回の地図を初期状態とします。
凡例調整の以下6つのサンプルを示します。
タイトルを編集
凡例移動
枠を付ける
背景色を変更
タイトルとテキストのサイズ変更
凡例を非表示
この記事で使用したRとパッケージのバージョンを記載しておきます。
R 3.6.1
sf 0.7-6
dplyr 0.8.3
ggplot 3.2.0
準備:前回と同じ地図を作成
前回と同様の手順で、茨城県の地図を作成します。
注意点は「描画」の部分が少し異なる点です。
下記ソースコードで確認して下さい。
変更した理由は、以下の部分を6つのサンプルで再利用するためです。
ggplot(shpCsv) + geom_sf(aes(fill = cy2020Grp))
こちらが、茨城県の地図を作成するソースコードです。
## シェープファイルとCSVファイルを結合
library(sf)
shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS")
d <- read.csv("./data/kekkahyo1_ibaraki_2015-2045.csv")
library(dplyr)
shpCsv <- left_join(shp, d, by = c("N03_004" = "市区町村"))
## 2020年の推計人口を、3グループ(増加、横ばい、減少)に分ける
x <- shpCsv$cy2020
xGrp <- case_when(x >= 102 ~ "増加",
x >= 98 & x < 102 ~ "横ばい",
x < 98 ~ "減少",
TRUE ~ NA_character_) # グループ化
xGrp <- factor(xGrp, levels = c("増加", "横ばい", "減少")) # 順序(≠大小関係)を設定
shpCsv$cy2020Grp <- xGrp # cy2020Grpカラムに格納
## 描画
library(ggplot2)
ibaraki <- ggplot(shpCsv) + geom_sf(aes(fill = cy2020Grp))
## 初期状態(前回と同じ)
ibaraki + scale_fill_manual(values = c("#fb9a99", "#ffffff", "#a6cee3"))
こちらが初期状態の地図です。
凡例の調整方法一覧(6サンプル)
タイトルを編集
凡例のタイトルを編集します。
## 1. タイトル編集
ibaraki + scale_fill_manual("2020年の推計人口", values = c("#fb9a99", "#ffffff", "#a6cee3"))
凡例移動
凡例を移動させます。
## 2. 凡例移動
ibaraki + scale_fill_manual("2020年の推計人口", values = c("#fb9a99", "#ffffff", "#a6cee3")) +
theme(legend.position = c(0.2, 0.8)) # 左下は 0, 0、右上は 1, 1
枠を付ける
凡例に枠を付けます。
## 3. 枠を付ける
ibaraki + scale_fill_manual("2020年の推計人口", values = c("#fb9a99", "#ffffff", "#a6cee3")) +
theme(legend.position = c(0.2, 0.8),
legend.background = element_rect(colour = "black")) # 枠の色を指定
背景色を変更
背景色を変更します。
ここでは、色は変更せず、透明にしています。
## 4. 背景色を変更
ibaraki + scale_fill_manual("2020年の推計人口", values = c("#fb9a99", "#ffffff", "#a6cee3")) +
theme(legend.position = c(0.2, 0.8),
legend.background = element_rect(fill = "transparent")) # 透明の場合
タイトルとテキストのサイズ変更
凡例のタイトルとテキストのフォントサイズを変更します。
## 5. タイトルとテキストのサイズ変更
ibaraki + scale_fill_manual("2020年の推計人口", values = c("#fb9a99", "#ffffff", "#a6cee3")) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_text(size = 15), # タイトルサイズ
legend.text = element_text(size = 12)) # テキストサイズ
凡例を非表示
最後に、凡例を非表示にします。
## 6. 凡例を非表示
ibaraki + scale_fill_manual("2020年の推計人口", values = c("#fb9a99", "#ffffff", "#a6cee3")) +
theme(legend.position = "none") # noneで非表示
おわりに
お疲れさまでした。
今回のサンプルは地図以外でも使えます。
Rでggplot2を使う際には、ぜひ参考にして下さい。