Soy un novato en R/ggplot. Me gustaría crear un diagrama geom_line de una serie temporal variable continua y luego agregar una capa compuesta de eventos. La variable continua y sus marcas de tiempo se almacenan en un data.frame, los eventos y sus marcas de tiempo se almacenan en otro data.frame.R + ggplot: serie de tiempo con eventos
Lo que haría realmente me gusta hacer es algo así como los gráficos en finance.google.com. En esos, las series de tiempo son acciones-precio y hay "banderas" para indicar noticias-eventos. En realidad, no estoy tramando cosas de finanzas, pero el tipo de gráfico es similar. Estoy tratando de trazar visualizaciones de datos de archivo de registro. He aquí un ejemplo de lo que quiero decir ...
Si recomendable (?), Me gustaría utilizar data.frames separadas para cada capa (uno para las observaciones continuas variables, otro para eventos).
Después de algunos intentos de prueba y error, esto es lo más cerca que puedo llegar. Aquí, estoy usando datos de ejemplo de conjuntos de datos que vienen con ggplot. "economía" contiene algunos datos de series temporales que me gustaría trazar y "presidencial" contiene algunos eventos (elecciones presidenciales).
library(ggplot2)
data(presidential)
data(economics)
presidential <- presidential[-(1:3),]
yrng <- range(economics$unemploy)
ymin <- yrng[1]
ymax <- yrng[1] + 0.1*(yrng[2]-yrng[1])
p2 <- ggplot()
p2 <- p2 + geom_line(mapping=aes(x=date, y=unemploy), data=economics , size=3, alpha=0.5)
p2 <- p2 + scale_x_date("time") + scale_y_continuous(name="unemployed [1000's]")
p2 <- p2 + geom_segment(mapping=aes(x=start,y=ymin, xend=start, yend=ymax, colour=name), data=presidential, size=2, alpha=0.5)
p2 <- p2 + geom_point(mapping=aes(x=start,y=ymax, colour=name), data=presidential, size=3)
p2 <- p2 + geom_text(mapping=aes(x=start, y=ymax, label=name, angle=20, hjust=-0.1, vjust=0.1),size=6, data=presidential)
p2
Preguntas:
Esto está bien para eventos muy escasas, pero si hay un grupo de ellos (como sucede a menudo en un archivo de registro), que se complica. ¿Hay alguna técnica que pueda usar para mostrar prolijamente un grupo de eventos que ocurren en un corto intervalo de tiempo? Estaba pensando en position_jitter, pero fue muy difícil para mí llegar tan lejos. Los gráficos de Google acumulan estos "indicadores" de eventos uno encima del otro si hay muchos de ellos.
En realidad, no me gusta pegar los datos del evento en la misma escala que la pantalla de medición continua. Preferiría ponerlo en facet_grid. El problema es que todas las facetas deben provenir del mismo data.frame (no estoy seguro si eso es cierto). Si es así, que también parece que no es ideal (o tal vez sólo estoy tratando de evitar el uso de remodelar?)
Plan de interés: ¡no espere conseguir un trabajo después de que un presidente republicano asuma el poder! – James
Fue solo la información más útil y disponible para usar como ejemplo-- pero sí, te hace pensar :-) – Angelo