Sono un novizio R/ggplot. Vorrei creare un diagramma geom_line di una serie temporale variabile continua e quindi aggiungere un livello composto da eventi. La variabile continua e i suoi timestamp sono memorizzati in un data.frame, gli eventi e i loro timestamp sono memorizzati in un altro data.frame.R + ggplot: Serie storica con eventi
Quello che vorrei fare veramente è qualcosa come i grafici su finance.google.com. In quelli, le serie temporali sono quotazioni di borsa e ci sono "bandiere" per indicare notizie-eventi. In realtà non sto tracciando materiale finanziario, ma il tipo di grafico è simile. Sto cercando di tracciare visualizzazioni dei dati del file di registro. Ecco un esempio di ciò che intendo ...
Se consigliabile (?), Vorrei utilizzare data.frames separate per ogni strato (uno per le osservazioni variabili continue, un altro per gli eventi).
Dopo alcune prove ed errori questo è il più vicino possibile. Qui, sto usando dati di esempio dai set di dati forniti con ggplot. "economia" contiene alcuni dati di serie temporali che mi piacerebbe tracciare e "presidenziale" contiene alcuni eventi (elezioni presidenziali).
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
Domande:
Questo va bene per gli eventi molto scarsa, ma se c'è un gruppo di loro (come spesso accade in un file di log), essa diventa disordinato. C'è qualche tecnica che posso usare per mostrare in modo ordinato una serie di eventi che si verificano in un breve intervallo di tempo? Stavo pensando a position_jitter, ma è stato davvero difficile per me arrivare così lontano. i grafici di google impilano questi "flag" di eventi uno sopra l'altro se ce ne sono molti.
In realtà non mi piace incollare i dati dell'evento nella stessa scala del display di misurazione continua. Preferirei inserirlo in un facet_grid. Il problema è che tutti i facet devono essere tutti provenienti dallo stesso data.frame (non è sicuro che sia vero). Se è così, che sembra anche non ideali (o forse sto solo cercando di evitare l'uso di rimodellare?)
Trama interessante: non aspettarti di trovare un lavoro dopo che un presidente repubblicano è salito al potere! – James
E 'stato solo il più pratico e disponibile da usare come esempio - ma sì, ti fa pensare :-) – Angelo