Мой совет, чтобы изменить ваши данные в «аккуратном» виде, это позволит вам избежать больших проблем в будущем (не только с ggplot2). См. эту замечательную документацию.
Здесь проблема не в функции facet_grid()
, а в способе указания ggplot2 данных для включения в легенду; эти данные должны быть внутри aes()
.
Поскольку вы не предоставляете воспроизводимый набор данных, я использую набор mtcars
, который входит в состав RStudio. Просто скопируйте и вставьте фрагмент кода ниже, и он запустится.
# very usefull set of packages
library(tidyverse)
# here is what you are trying to do
ex_plot1 = ggplot(data = mtcars, aes(x = disp)) +
geom_line(aes(y = mpg), color = "red") +
geom_line(aes(y = qsec), color = "green")
plot(ex_plot1) # see there is no legend
# reshape your data this way:
ex_data2 = pivot_longer(data = mtcars,
cols = c("mpg", "qsec"),
values_to = "values",
names_to = "colored_var")
# and then plot it, legend appears
ex_plot2 = ggplot(data = ex_data2, aes(x = disp, y = values, color = colored_var)) +
geom_line()
plot(ex_plot2)
[РЕДАКТИРОВАТЬ] добавил выходные данные
сюжет без легенды, ex_plot1
сюжет с легендой, ex_plot2