Чтобы создать легенду вручную в ggplot, вы можете использовать различные методы в зависимости от ваших конкретных потребностей. Вот четыре часто используемых метода с примерами кода:
Метод 1: использование функции scale_*_manual()
library(ggplot2)
# Create example data
data <- data.frame(
x = 1:10,
y = 1:10,
group = c(rep("Group A", 5), rep("Group B", 5))
)
# Create the plot
plot <- ggplot(data, aes(x, y, color = group)) +
geom_point()
# Define custom colors
colors <- c("Group A" = "red", "Group B" = "blue")
# Add manual legend
plot + scale_color_manual(values = colors, labels = c("Group A", "Group B"))
Метод 2: использование функции guides()
library(ggplot2)
# Create example data
data <- data.frame(
x = 1:10,
y = 1:10,
group = c(rep("Group A", 5), rep("Group B", 5))
)
# Create the plot
plot <- ggplot(data, aes(x, y, color = group)) +
geom_point()
# Add manual legend
plot + guides(color = guide_legend(
override.aes = list(color = c("red", "blue")),
title = "Groups",
label = c("Group A", "Group B")
))
Метод 3: использование функций scale_*_*()с функцией guide_legend()
library(ggplot2)
# Create example data
data <- data.frame(
x = 1:10,
y = 1:10,
group = c(rep("Group A", 5), rep("Group B", 5))
)
# Create the plot
plot <- ggplot(data, aes(x, y, color = group)) +
geom_point()
# Add manual legend
plot + scale_color_manual(
values = c("Group A" = "red", "Group B" = "blue"),
guide = guide_legend(
title = "Groups",
label = c("Group A", "Group B")
)
)
Метод 4. Создание пользовательской легенды с помощью функций guides()и draw_key_*()
library(ggplot2)
# Create example data
data <- data.frame(
x = 1:10,
y = 1:10,
group = c(rep("Group A", 5), rep("Group B", 5))
)
# Create the plot
plot <- ggplot(data, aes(x, y, color = group)) +
geom_point()
# Create custom legend
my_legend <- function() {
draw_key_point(size = 5, shape = 16, fill = "white")
}
# Add manual legend
plot + guides(color = guide_legend(
title = "Groups",
label = c("Group A", "Group B"),
keywidth = 2,
keyheight = 2,
override.aes = list(size = 5, shape = 16, fill = "white"),
key = my_legend
))