この記事では、Rで凡例(はんれい)を調整する方法について説明します。
記事の概要です。

ミサキ
QGISと異なり、Rは標準で凡例が表示されます!
そのため、調整方法について詳しく説明します。
また、この記事は、QGISのこちらの記事と対応しています。
この記事で使用した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を使う際には、ぜひ参考にして下さい。
では。
—
YouTube: ミサキさん
問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)
コメント
[…] 凡例の調整法 | R, GIS […]