R語言ggmap空間可視化機動車交通事故地圖
原文鏈接:http://tecdat.cn/?p=12350
?
在本文中,我使用ggmap可視化紐約市的交通事故。?
數(shù)據(jù)來自紐約市開放數(shù)據(jù)。我的數(shù)據(jù)范圍是2012年至2015年。該數(shù)據(jù)跟蹤車輛的類型,發(fā)生事故的街道的名稱以及事故的經(jīng)度和緯度坐標。兩個坐標都保存為單個字符變量,稱為“ LOCATION”。
在下面,我加載數(shù)據(jù),刪除所有沒有位置坐標的事故,并解析LOCATION變量以獲取經(jīng)度和緯度坐標。我還解析日期變量以創(chuàng)建年份變量,并使用該變量創(chuàng)建兩個數(shù)據(jù)集:一個數(shù)據(jù)集包含2013年的所有車輛事故,另一個數(shù)據(jù)集包含2014年的所有車輛事故。
d_clean=d[which(regexpr(',',d$LOCATION)!=-1),]
comm=regexpr(',',d_clean$LOCATION)
d_clean$loc=as.character(d_clean$LOCATION)
d_clean$lat=as.numeric(substr(d_clean$loc,2,comm-1))
d_clean$long=as.numeric(substr(d_clean$loc,comm+1,nchar(d_clean$loc)-1))
d_clean$year=substr(d_clean$DATE,7,10)
d_2013=d_clean[which(d_clean$year=='2013'),c('long','lat')]
d_2014=d_clean[which(d_clean$year=='2014'),c('long','lat')]
?
接下來,我使用get_map()查詢Google Maps并獲取紐約市的地圖。我使用stat_density2d()向該地圖添加了一個二維密度層。我對2013年和2014年的數(shù)據(jù)都執(zhí)行此操作,并使用gridExtra的grid.arrange()并排放置地圖。
ny_plot=ggmap(get_map('New York, New York',zoom=12, maptype='terrain'))
grid.arrange(plot1, plot2,nrow=1,ncol=2)
?
?

?
接下來,我按行政區(qū)域繪制了2013年的事故密度。我編寫了一個函數(shù)boro(),該函數(shù)會刪除所有缺少街道名稱的觀測值,并基于自治市鎮(zhèn)(2013)子集。我將它們堆疊在一起,同時添加自治市鎮(zhèn)名稱,然后在向量col_vals中為每個自治市鎮(zhèn)分配一種顏色。我使用stat_density2d的group參數(shù)以不同的顏色分別繪制每個自治市鎮(zhèn)的密度層。
plot4=ny_plot+
??stat_density2d(data=full, geom='polygon',bins = 10, aes(x=full$long,y=full$lat,fill = Borough, alpha=..level..))+
??scale_fill_manual(values=col_vals)+
??#guides(fill = guide_colorbar(barwidth = 1, barheight = 12)) +
??scale_alpha(guide = FALSE)+
??xlab(' ')+ylab(' ')+
??ggtitle('NYC Vehicle Accident Density by Borough, 2013')
plot4
?
