2016-02-19 207 views
7

有沒有一種方法來實現R的Leaflet或任何其他交互式地圖庫的時間滑塊?我將數據按時間序列排列,並且希望將這些數據整合到「運動」圖中,其中繪圖點隨時間動態變化。R:帶時間滑塊的地圖?

我正在考慮將我的數據分成幾塊,使用子集捕獲每個月的相應數據表。但是,我將如何在不同的月份對應的不同數據集之間移動?

就目前而言,我取平均值並繪製了這些點,但我寧願製作一個整合了時間序列的地圖。

這裏是我到目前爲止的代碼:提前

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 

謝謝!任何指導/見解將不勝感激。

+1

這裏有一個想法,正如你建議你可以按月分割你的數據集並將這些子集添加爲地圖上的圖層(https://rstudio.github.io /leaflet/showhide.html);然後可以單擊/取消選中要顯示的圖層 – MLavoie

+0

有一個示例[此處](http://dwilhelm89.github.io/LeafletSlider/)。滑塊位於地圖的右上角。 (雖然這不是R的實現......) – jbaums

+0

謝謝。我非常喜歡這些想法!我將嘗試使用圖層建議。我更喜歡時間滑塊,但我認爲這是一個Java應用程序,可悲的是這不是我的知識領域。 –

回答

-3

嘗試在R中「操縱」包。我不確定它是否適用於傳單或不是?但它應該適用於正常情節和ggplot。

謝謝, Naveen。

0

Here是一個可能有幫助的答案。

或者,您可以使用mapview::popupGraph作爲彈出圖形提供點的時間序列。也可以提供交互式的基於htmlwidget的圖表popupGraph