凡例の調整法 | R, GIS

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

記事の概要です。

  • 前回の地図を初期状態とします。

  • 凡例調整の以下6つのサンプルを示します。

    1. タイトルを編集

    2. 凡例移動

    3. 枠を付ける

    4. 背景色を変更

    5. タイトルとテキストのサイズ変更

    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を使う際には、ぜひ参考にして下さい。

いいなと思ったら応援しよう!