Sono nuovo di ggplot, quindi abbi pazienza con me. Sto analizzando le proiezioni di crescita per 35 aree geografiche di piccole dimensioni che sono una malsana quantità per una trama anche con l'uso della fantastica libreria directlabels
. Comunque ho bisogno di tutte le serie per lo screening iniziale.Passare variabile con tipi di linea a ggplot tipo di linea
La sfida è renderlo leggibile. Ho trovato una soluzione di @Ben Bolker per l'utilizzo di large numbers of distinct colors, ma ho problemi a variare il tipo di linea. Le 35 serie non hanno bisogno di essere uniche, ma mi piacerebbe usare i 12 diversi tipi per rendere le singole serie più facili da leggere.
Il mio piano era quello di creare un elenco casuale con 35 elementi dei 12 tipi possibili e passare che come argomento del tipo di linea, ma sto avendo difficoltà a farla funzionare, con l'errore:
Error: Aesthetics must either be length one, or the same length as the dataProblems:lty
I avere 35 valori nella lista dei tipi di linea. Certo che mi piacerebbe che i tipi, i colori e tutto ciò si riflettessero nella leggenda.
I dati fusi si presentano così; 9 degli anni osservazioni per ciascuna delle 35 serie:
> simulation_long_index[16:24,]
year geography value
16 2018 sfr_2 101.1871
17 2019 sfr_2 101.1678
18 2020 sfr_2 101.2044
19 2012 sfr_3 100.0000
20 2013 sfr_3 100.1038
21 2014 sfr_3 100.2561
22 2015 sfr_3 100.0631
23 2016 sfr_3 100.8071
24 2017 sfr_3 101.2405
Ecco mio codice finora:
lty <- data.frame(lty=letters[1:12][sample(1:12, 35,replace=T)])
g3<-ggplot(data=simulation_long_index,
aes(
x=as.factor(year),
y=value,
colour=geography,
group=geography,
linetype=lty$lty))+
geom_line(size=.65) +
scale_colour_manual(values=manyColors(35)) +
geom_point(size=2.5) +
opts(title="growth")+
xlab("Year") +
ylab(paste("Indexed Value (Rel. to 2012")) +
opts(axis.text.x=theme_text(angle=90, hjust=0))
print(g3)
aggiungendo
scale_linetype_manual("",values=lty$lty) +
dopo scale_color_manual posto dell'argomento tipo di linea produce il grafico, ma le linee sono tutte uguali. In che modo, allora, ho le righe da variare per i conteggi di serie grandi?
'lty' deve essere una colonna nel frame di dati originale. (E come nota generale, se stai usando i simboli del dollaro all'interno di "aes", è un buon segno che stai facendo qualcosa di sbagliato). – joran