R で ggplot を使用してカスタム凡例を作成する
胡金庫
2023年1月30日
-
R で
theme
関数のlegend.position
パラメーターを使用して凡例の位置を指定する -
theme
関数のlegend.justification
およびlegend.background
パラメーターを使用して、カスタム凡例を作成する -
凡例タイトルのフォーマットを変更するには、
テーマ
関数のlegend.title
パラメーターを使用する
この記事では、R で ggplot
を使用してカスタム凡例を作成する複数の方法を示します。
R で theme
関数の legend.position
パラメーターを使用して凡例の位置を指定する
legend.position
パラメーターは、プロット内の凡例の位置を指定します。オプションの値は、"none"
、"left"
、"right"
、"bottom"
、"top"
、または 2 要素の数値ベクトルです。次の例では、plot.title
パラメーターを使用して、プロットのタイトルを変更しています。最後に、grid.arrange
関数を使用して 2つのプロットを同時に描画します。
library(ggplot2)
library(gridExtra)
library(babynames)
library(dplyr)
dat <- babynames %>%
filter(name %in% c("Alice", "Maude", "Mae")) %>%
filter(sex=="F")
p1 <- ggplot(dat, aes(x = year, y = n, color = name)) +
geom_line() +
scale_y_continuous(
breaks = seq(0, 15000, 1000),
name = "Number of babies") +
ggtitle("Name Popularity Through Years")
p2 <- ggplot(dat, aes(x = year, y = n, color = name)) +
geom_line() +
scale_y_continuous(
breaks = seq(0, 15000, 1000),
name = "Number of babies") +
theme(
legend.position = "left",
plot.title = element_text(
size = rel(1.2), lineheight = .9,
family = "Calibri", face = "bold", colour = "brown"
)) +
ggtitle("Name Popularity Through Years")
grid.arrange(p1, p2, nrow = 2)
theme
関数の legend.justification
および legend.background
パラメーターを使用して、カスタム凡例を作成する
theme
関数のもう 1つの便利なパラメーターは、凡例の背景をフォーマットするために使用できる legend.background
です。次のコードスニペットは、凡例の長方形を白い色と黒い線で塗りつぶします。また、legend.justification
を legend.position
と組み合わせて、凡例の位置を指定します。
library(ggplot2)
library(gridExtra)
library(babynames)
library(dplyr)
dat <- babynames %>%
filter(name %in% c("Alice", "Maude", "Mae")) %>%
filter(sex=="F")
p3 <- ggplot(dat, aes(x = year, y = n, color = name)) +
geom_line() +
scale_y_continuous(
breaks = seq(0, 15000, 1000),
name = "Number of babies") +
theme(
legend.position = c(1, 1),
legend.justification = c(1, 1),
legend.background = element_rect(fill = "white", colour = "black"),
plot.title = element_text(
size = rel(1.2), lineheight = .9,
family = "Calibri", face = "bold", colour = "brown"
)) +
ggtitle("Name Popularity Through Years")
p4 <- ggplot(dat, aes(x = year, y = n, color = name)) +
geom_line() +
scale_color_discrete(limits = c("Maude", "Mae", "Alice")) +
scale_y_continuous(
breaks = seq(0, 15000, 1000),
name = "Number of babies") +
theme(
legend.position = c(1, 1),
legend.justification = c(1, 1),
legend.background = element_rect(fill = "white", colour = "black"),
plot.title = element_text(
size = rel(1.2), lineheight = .9,
family = "Calibri", face = "bold", colour = "brown"
)) +
ggtitle("Name Popularity Through Years")
grid.arrange(p3, p4, nrow = 2)
凡例タイトルのフォーマットを変更するには、テーマ
関数の legend.title
パラメーターを使用する
legend.title
パラメーターを使用して、凡例のタイトルのフォーマットを変更できます。フォントファミリー、テキストの色、フォントサイズなどのフォーマットを変更するには、さまざまな引数を持つ element_text
関数を使用します。grid.arrange
関数は、2つの描画されたグラフ間の変化を示すために使用されます。
library(ggplot2)
library(gridExtra)
library(babynames)
library(dplyr)
dat <- babynames %>%
filter(name %in% c("Alice", "Maude", "Mae")) %>%
filter(sex=="F")
p5 <- ggplot(dat, aes(x = year, y = n, color = name)) +
geom_line() +
scale_color_discrete(limits = c("Maude", "Mae", "Alice")) +
labs(color = "Name") +
scale_y_continuous(
breaks = seq(0, 15000, 1000),
name = "Number of babies") +
theme(
legend.position = c(1, 1),
legend.justification = c(1, 1),
legend.background = element_rect(fill = "white", colour = "black"),
plot.title = element_text(
size = rel(1.2), lineheight = .9,
family = "Calibri", face = "bold", colour = "brown"
)) +
ggtitle("Name Popularity Through Years")
p6 <- ggplot(dat, aes(x = year, y = n, color = name)) +
geom_line() +
scale_color_discrete(limits = c("Maude", "Mae", "Alice")) +
labs(color = "Name") +
scale_y_continuous(
breaks = seq(0, 15000, 1000),
name = "Number of babies") +
theme(
legend.title = element_text(
family = "Calibri",
colour = "brown",
face = "bold",
size = 12),
legend.position = c(1, 1),
legend.justification = c(1, 1),
legend.background = element_rect(fill = "white", colour = "black"),
plot.title = element_text(
size = rel(1.2), lineheight = .9,
family = "Calibri", face = "bold", colour = "brown"
)) +
ggtitle("Name Popularity Through Years")
grid.arrange(p5, p6, nrow = 2)
著者: 胡金庫