HOWTO · R

Erstellen Sie eine benutzerdefinierte Legende mit ggplot in R

In diesem Artikel wird beschrieben, wie Sie mit ggplot in R . eine benutzerdefinierte Legende erstellen

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)

ggplot benutzerdefinierte Legende 1

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)

ggplot benutzerdefinierte Legende 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)

ggplot benutzerdefinierte Legende 3