/ / ggplot2: come regolare i tipi di linea + l'ordine nella legenda? - r, ggplot2

ggplot2: come regolare i tipi di linea + l'ordine nella legenda? - r, ggplot2

Vorrei modificare i tipi di linea inseguendo ggplot. Introduco quindi un'altra colonna nel data.frame df per rappresentare il tipo di linea, ma una volta convertito in un fattore il tipo di linea invece di "metodo" appare nella legenda ... (vedi prova 3).

Come posso ottenere "metodo" nella legenda? Alla fine mi piacerebbe poterlo fare

  1. scegli liberamente il tipo di linea,
  2. scegliere liberamente l'ordine in cui questi tipi di linea compaiono nella legenda e
  3. avere il "metodo" corrispondente mostrato come testo della legenda.

Ecco i miei tentativi:

require(ggplot2)
set.seed(1)
df <- data.frame(x=c(1:4, 2:5),
method=rep(c("a", "b"), each=4),
lt=rep(c(5,3), each=4),
value=rep(c(0,1), each=4)+runif(8))

## trial 1:
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(group=method, linetype=method))
# fine, but not the linetypes I would like to have

## trial 2:
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(group=method, linetype=lt))
# correct linetypes, but no legend

## trial 3:
ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(group=method, linetype=as.factor(lt)))
# legend, but not the correct one (I would like to have the "group"ing
# variable "method" in the legend as in trial 1)

risposte:

16 per risposta № 1

Uso method come il linetype, ma poi mappalo manualmente ai tipi di linee che desideri. Non è necessario introdurre un'altra variabile in questo modo.

ggplot(df, aes(x=x, y=value)) +
geom_point() +
geom_line(aes(linetype=method)) +
scale_linetype_manual(breaks=c("a","b"), values=c(5,3))

inserisci la descrizione dell'immagine qui