Я встречаюсь с каким-то странным поведением в моей легенде при добавлении geom_smooth()
и geom_vline()
в моей диаграмме ggplot2. Здесь воспроизводимый пример:
library(ggplot2)
n <- 60
set.seed(123)
df <- data.frame(Area = sample(c("A", "B", "C", "D"), size = n, replace = TRUE),
x = runif(n),
y = runif(n),
Type = sample(c("I", "II"), size = n, replace = TRUE),
Result = sample(c("K", "L", "M"), size = n, replace = TRUE))
df.breaks <- data.frame(Area = c("B", "C"), x = c(0.8, 0.3))
ggplot(df, aes(x = x, y = y)) +
geom_point(aes(colour = Result, shape = Type), size = 3) +
geom_smooth(aes(linetype = "Smooth"), colour = "green", se = FALSE) +
geom_hline(yintercept = 0.3) +
facet_wrap(~Area) +
geom_vline(data = df.breaks, aes(xintercept = x, linetype = "Break"), colour = "purple") +
scale_colour_manual(values = c("K" = "red", "L" = "orange", "M" = "blue")) +
scale_linetype_manual(name = "Lines", values = c("Break" = "dashed", "Smooth" = "solid"))
Как вы заметите, легенда "Lines" имеет как вертикальные, так и горизонтальные строки в каждом элементе, а в первом случае есть пара пунктирных линий, а во втором случае - несколько сплошных линий. Я пытаюсь настроить свой код для создания легенды с (1) горизонтальной зеленой линией и рядом с ней рядом с названием "Гладкая" и (2) вертикальной фиолетовой линией с клавишей рядом с ней, называемой "Break". Я был бы признателен за помощь, как бы я ни старался (включая linetype
внутри/снаружи aes()
и т.д., Или используя scale_linetype_identity()
, или даже параметр override.aes
в guides
), я не смог найти нужное сочетание!
Я искал аналогичные примеры, и хотя я нашел другие сообщения с наложенной вертикальной линией на colour
, fill
или shape
и т.д., я не нашел один с вертикальной строкой на linetype
легенда, такая как моя. Любая помощь будет глубоко оценена! Спасибо!