2016-02-19 24 views
7

Esiste un modo per implementare un dispositivo di scorrimento temporale per Leaflet o qualsiasi altra libreria di mappe interattive in R? Ho organizzato i dati in una serie temporale e vorrei integrarli in una mappa "in movimento" in cui i punti della trama cambiano dinamicamente nel tempo.R: Mappe con Time Slider?

Stavo pensando di rompere i miei dati in pezzi, usando sottoinsieme per catturare la tabella di dati corrispondente per ogni mese. Ma come mi muoverò tra i diversi set di dati corrispondenti a diversi mesi?

Allo stato attuale, ho preso la media e tracciato quei punti, ma preferisco produrre una mappa che integri le serie temporali.

Ecco il mio codice finora:

data<-read.csv("Stericycle Waste Data.csv") 
library(reshape2) 
library(ggplot2) 
library(plyr) 
library(ggmap) 
names(data)<-c("ID1","ID2", "Site.Address", "Type", "City", "Province", "Category", "Density", "Nov-14", "Dec-14", "Jan-15", "Feb-15", "Mar-15", "Apr-15", "May-15", "Jun-15", "Jul-15", "Aug-15", "Sep-15", "Oct-15", "Nov-15", "Dec-15", "Jan-16") 
data<-melt(data, c("ID1","ID2", "Site.Address","Type", "City", "Province", "Category", "Density")) 
data<-na.omit(data) 
data_grouped<-ddply(data, c("Site.Address", "Type","City", "Province", "Category", "Density", "variable"), summarise, value=sum(value)) 
names(data_grouped)<-c("Site.Address", "Type", "City", "Province", "Category", "Density", "Month", 'Waste.Mass') 

dummy<-read.csv('locations-coordinates.csv') 
geodata<-merge(data_grouped, dummy, by.x="Site.Address", by.y="Site.Address", all.y=TRUE) 

library(leaflet) 
d = geodata_avg$density_factor 
d = factor(d) 
cols <- rainbow(length(levels(d)), alpha=NULL) 
geodata_avg$colors <- cols[unclass(d)] 
newmap <- leaflet(data=geodata_avg) %>% addTiles() %>% 
addCircleMarkers(lng = ~lon, lat = ~lat, weight = 1, radius = ~rank*1.1, color = ~colors, popup = paste("Site Address: ", geodata_avg$Site.Address, "<br>", "Category: ", geodata_avg$Category, "<br>", "Average Waste: ", geodata_avg$value)) 
newmap 

Grazie in anticipo! Qualsiasi guida/intuizione sarebbe molto apprezzata.

+1

ecco un'idea, come hai suggerito di dividere il set di dati per mese e aggiungere questi sottoinsiemi come livelli sulla mappa (https://rstudio.github.io /leaflet/showhide.html); è quindi possibile fare clic/rimuovere il livello che si desidera visualizzare. – MLavoie

+0

C'è un esempio [qui] (http://dwilhelm89.github.io/LeafletSlider/). Il cursore si trova nell'angolo in alto a destra della mappa. (Non è un'implementazione R però ...) – jbaums

+0

Grazie. Mi piacciono molto le idee! Ho intenzione di provare a utilizzare il suggerimento di livello. Preferirei il cursore del tempo, ma penso che sia un'applicazione java, che purtroppo non è nel mio campo di conoscenza. –

risposta

-3

Provare a "manipolare" il pacchetto in R. Non sono sicuro se funzionerà per il volantino o no? ma dovrebbe funzionare per grafici normali e ggplot.

Grazie, Naveen.

0

Here è una risposta che può essere di aiuto.

In alternativa, è possibile fornire le serie temporali di un punto come grafico a comparsa utilizzando mapview::popupGraph. È anche possibile fornire grafici interattivi basati su htmlwidget su popupGraph