Создайте собственную легенду с помощью ggplot в R

  1. Используйте параметр legend.position в функции theme, чтобы указать положение легенды в R
  2. Используйте параметры legend.justification и legend.background в функции theme для создания пользовательской легенды
  3. Используйте параметр legend.title в функции theme, чтобы изменить форматирование заголовка легенды

В этой статье будет продемонстрировано несколько методов создания пользовательской легенды с помощью ggplot в R.

Используйте параметр legend.position в функции theme, чтобы указать положение легенды в R

Параметр legend.position указывает положение легенды на графике. Необязательные значения могут быть "none", "left", "right", "bottom", "top" или двухэлементным числовым вектором. Параметр plot.title также используется в следующем примере для изменения заголовка графика. Наконец, два графика рисуются одновременно с помощью функции grid.arrange.

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 1

Используйте параметры legend.justification и legend.background в функции theme для создания пользовательской легенды

Еще один полезный параметр функции theme - 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)

Пользовательская легенда ggplot 2

Используйте параметр legend.title в функции theme, чтобы изменить форматирование заголовка легенды

Параметр legend.title можно использовать для изменения форматирования заголовка легенды. Для изменения форматирования, такого как семейство шрифтов, цвет текста или размер шрифта, требуется функция element_text с различными аргументами. Функция grid.arrange используется для демонстрации изменения между двумя нарисованными графиками.

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 3

Сопутствующая статья - R Plot

  • Добавить прозрачный прямоугольник на коробчатую диаграмму в R
  • Создавайте бок о бок Boxplots в R
  • Функция scale_colour_discrete в R
  • Функция scale_x_discrete в R