Я согласен, что исправление легенд может быть сложным. Для этого примера просто введите show.legend = FALSE
для ОДНОЙ строки, которую вы не хотите.
library(ggplot2)
ggplot() +
geom_vline(aes(xintercept=1,colour="vertical"), show.legend = F) +
geom_hline(aes(yintercept=1,colour="horizontal"))
![](https://i.imgur.com/OMlFimX.png)
Хорошо, вот попытка 2. Это довольно уродливо; это втиснет две легенды в один сюжет. Это выглядит довольно близко к тому, что вы хотите.
library(ggplot2)
p1 <- ggplot() +
geom_vline(aes(xintercept=1,colour="vertical"))+
scale_color_manual(values = "#619CFF")
p2 <- ggplot()+
geom_hline(aes(yintercept=1,colour="horizontal"))
l1 <- cowplot::get_legend(p1)
l2 <- cowplot::get_legend(p2)
p3 <- ggplot() +
geom_vline(aes(xintercept=1,colour="vertical")) +
geom_hline(aes(yintercept=1,colour="horizontal"))+
theme(legend.position = "none")
l3 <- cowplot::plot_grid(l1, l2, ncol = 1, align = "v")
cowplot::plot_grid(p3, l3, nrow = 1, align = "h", rel_widths = c(1, 0.2))
![](https://i.imgur.com/cV05Nlp.png)