tutorial - Trazar múltiples líneas de un marco de datos con ggplot2
superponer graficas en r ggplot (2)
Estoy tratando de trazar varias líneas usando ggplot2. Mis datos se ajustan en un marco de datos de la siguiente manera:
> rs
time 1 2 3 4
1 200 17230622635 17280401147 17296993985 17313586822
2 400 22328386154 22456712709 22499488227 22542263745
3 600 28958840968 29186097622 29261849840 29337602058
4 800 40251281810 40650094691 40783032318 40915969945
5 1000 73705771414 74612829244 74915181854 75217534464
Me gustaría utilizar la columna "tiempo" como el valor x. Otras columnas son valores y de puntos en diferentes líneas. En los datos anteriores, hay 4 líneas, cada línea consta de 5 puntos. Más específicamente, la primera línea tiene puntos (200, 17230622635), (400, 22328386154), (600, 28958840968), etc. La segunda línea tiene puntos (200, 17280401147), (400, 22456712709), etc. (Si necesita una explicación más detallada del formato de datos, ver PS al final).
Para generar datos similares, puede usar el siguiente código:
rs = data.frame(seq(200, 1000, by=200), runif(5), runif(5), runif(5))
names(rs)=c("time", 1:3)
Seguí algunos ejemplos sobre el desbordamiento de pila e intenté usar reshape2 y ggplot2 para hacer este diagrama:
Primero fundir los datos en un "formato largo":
library(''reshape2'')
library(''ggplot2'')
melted = melt(rs, id.vars="time")
Luego traza los datos usando la siguiente declaración:
ggplot() + geom_line(data=melted, aes(x="time", y="value", group="variable"))
Sin embargo, obtuve un gráfico vacío que no tiene punto ni línea.
¿Alguien puede ayudarme a ver qué pasa con mi procedimiento?
PD
Sobre el formato de datos :
Puedes imaginar que hay muchos estudiantes en la clase y tenemos sus puntajes de varias pruebas. Cada fila contiene los datos de un alumno: la primera columna es el número del cuestionario, luego el resto de las columnas son sus puntajes. Para cada estudiante, queremos trazar una línea para reflejar cómo cambian sus puntajes en diferentes cuestionarios, cada punto es el puntaje de una prueba para ciertos estudiantes. Como hay varios estudiantes, nos gustaría dibujar líneas múltiples.
Acerca de los datos fundidos :
Específico para los datos que muestro arriba, los datos que obtuve de la función melt()
son:
> melted
time variable value
1 200 1 17230622635
2 400 1 22328386154
3 600 1 28958840968
4 800 1 40251281810
5 1000 1 73705771414
6 200 2 17280401147
7 400 2 22456712709
8 600 2 29186097622
9 800 2 40650094691
10 1000 2 74612829244
11 200 3 17296993985
12 400 3 22499488227
13 600 3 29261849840
14 800 3 40783032318
15 1000 3 74915181854
16 200 4 17313586822
17 400 4 22542263745
18 600 4 29337602058
19 800 4 40915969945
20 1000 4 75217534464
Soltar las comillas
ggplot(data=melted, aes(x=time, y=value, group=variable)) + geom_line()
ver: ggplot estética
Otra opción es usar aes_string.
PD: ¿Por qué no puedo dejar esto como un comentario? ¿Es mi navegador o es este sitio web wonky?