Sto riscontrando alcuni strani comportamenti nella mia legenda quando aggiungo uno geom_smooth()
e uno geom_vline()
nel mio diagramma ggplot2. Ecco un esempio riproducibile:R - combinato geom_vline e geom_smooth nella legenda
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"))
Come noterete la scritta "Lines" è sia verticale e le linee horizontall in ogni elemento, e nel primo caso ci sono un paio di linee tratteggiate mentre nel secondo caso un paio di linee continue. Sto cercando di adattare il mio codice per produrre una legenda con (1) una linea verde orizzontale e una chiave accanto ad essa chiamata "Smooth" e (2) una linea viola dahsed verticale con una chiave accanto ad essa chiamata "Break". Gradirei qualche aiuto come, non importa quello che ho provato (incluso dentro/fuori aes()
ecc., Oppure usando scale_linetype_identity()
, o anche l'opzione override.aes
in guides
) Non riuscivo a trovare la combinazione giusta!
ho cercato esempi simili e anche se ho trovato altri post con una linea verticale sovrapposta colour
, fill
o shape
ecc, ho coulnd't trovare uno con una linea verticale su una leggenda linetype
come la mia. Qualsiasi aiuto sarà profondamente apprezzato! Grazie!
forse questo potrebbe aiutare https://groups.google.com/forum/embed/#!topic/ggplot2/pv_CGdzPWnE – MLavoie
L'unica cosa che sono riuscito a capire che anche venuto vicino era quello di utilizzare ' fill' per Smooth invece di 'linetype' per creare due legende separate. – aosmith
Grazie a tutti e due per le vostre risposte. Sono andato con il suggerimento di @ aosmith che è più semplice. – Constantinos