Erstellen Sie eine benutzerdefinierte Legende mit ggplot in R
-
Verwenden Sie den Parameter
legend.position
in der Funktiontheme
, um die Legendenposition in R . festzulegen -
Verwenden Sie die Parameter
legend.justification
undlegend.background
in der Funktiontheme
, um eine benutzerdefinierte Legende zu erstellen -
Verwenden Sie den Parameter
legend.title
in der Funktiontheme
, um die Formatierung des Legendentitels zu ändern
Dieser Artikel zeigt mehrere Methoden zum Erstellen einer benutzerdefinierten Legende mit ggplot
in R.
Verwenden Sie den Parameter legend.position
in der Funktion theme
, um die Legendenposition in R . festzulegen
Der Parameter legend.position
gibt die Legendenposition im Plot an. Optionale Werte können "none"
, "left"
, "right"
, "bottom"
, "top"
oder ein numerischer Vektor mit zwei Elementen sein. Der Parameter plot.title
wird auch im folgenden Beispiel verwendet, um den Titel des Plots zu ändern. Schliesslich werden mit der Funktion grid.arrange
zwei Plots gleichzeitig gezeichnet.
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)
Verwenden Sie die Parameter legend.justification
und legend.background
in der Funktion theme
, um eine benutzerdefinierte Legende zu erstellen
Ein weiterer nützlicher Parameter der Funktion theme
ist legend.background
, mit dem der Legendenhintergrund formatiert werden kann. Der folgende Codeausschnitt füllt das Legendenrechteck mit weißer Farbe und einem schwarzen Strich. Außerdem wird legend.justification
mit legend.position
kombiniert, um die Position der Legende anzugeben.
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)
Verwenden Sie den Parameter legend.title
in der Funktion theme
, um die Formatierung des Legendentitels zu ändern
Der Parameter legend.title
kann verwendet werden, um die Formatierung des Legendentitels zu ändern. Es braucht die Funktion element_text
mit verschiedenen Argumenten, um die Formatierung wie Schriftfamilie, Textfarbe oder Schriftgröße zu ändern. Mit der Funktion grid.arrange
wird der Wechsel zwischen den beiden gezeichneten Graphen demonstriert.
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)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook