Soy nuevo en ggplot, así que tengan paciencia conmigo. Estoy trazando las proyecciones de crecimiento para 35 geografías de áreas pequeñas, que es una cantidad insalubre para una parcela incluso con el uso de la fantástica biblioteca directlabels
. Sin embargo, necesito todas las series para la evaluación inicial.Pasando variable con tipos de línea a ggplot tipo de línea
El desafío es hacerlo legible. Encontré una solución de @Ben Bolker para usar large numbers of distinct colors pero tengo problemas para variar el tipo de línea. La serie 35 no necesita ser única, pero me gustaría usar los 12 tipos diferentes para hacer que las series individuales sean más fáciles de leer.
Mi plan era crear una lista aleatoria con 35 elementos de los 12 tipos posibles y pasar que a medida que el argumento de tipo de línea, pero estoy teniendo problemas para conseguir que funcione, con el error:
Error: Aesthetics must either be length one, or the same length as the dataProblems:lty
I tener 35 valores en la lista de tipos de línea. Por supuesto, me gustaría que los tipos, colores y todo se reflejen en la leyenda.
Los datos fundidos se ven así; observaciones de 9 años para cada uno de 35 series:
> 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
Aquí está mi código hasta ahora:
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)
añadiendo
scale_linetype_manual("",values=lty$lty) +
después scale_color_manual en lugar del argumento de tipo de línea produce el gráfico, pero las líneas son todas iguales. ¿Cómo, entonces, obtengo que las líneas varíen para los recuentos de series grandes?
'lty' tiene que ser una columna en su marco de datos original. (Y como nota general, si usa signos de dólar dentro de 'aes' eso es una buena señal de que está haciendo algo mal). – joran