R에서 deckgl과 Leaflet을 사용하여 히트 맵 (즉, 밀도 플롯)을 만드는 방법에 대한 예제를 이미 제공했습니다.이 게시물에서는 R에서 ggmap 패키지를 사용하여 데이터 세트의 공간 속성을 시각화하는 방법에 대한 예제를 제공하고 싶습니다. 분석에 사용할 패키지를로드합니다.
#devtools::install_github("dkahle/ggmap", ref = "tidyup")
# 현재 ggmap이 CRAN에 없기 때문에
library(ggmap)
library(ggplot2)
library(dplyr)
library(gridExtra)
이 코딩 예제에서 데모 목적으로 R에서 사용할 수있는 기본 데이터베이스를 사용하려고합니다. 따라서 상위 항목을 표시하여 해당 데이터 세트를 간략하게 보여줍니다.
head(crime)
## time date hour premise offense beat
## 82729 2010-01-01 07:00:00 1/1/2010 0 18A murder 15E30
## 82730 2010-01-01 07:00:00 1/1/2010 0 13R robbery 13D10
## 82731 2010-01-01 07:00:00 1/1/2010 0 20R aggravated assault 16E20
## 82732 2010-01-01 07:00:00 1/1/2010 0 20R aggravated assault 2A30
## 82733 2010-01-01 07:00:00 1/1/2010 0 20A aggravated assault 14D20
## 82734 2010-01-01 07:00:00 1/1/2010 0 20R burglary 18F60
## block street type suffix number month day
## 82729 9600-9699 marlive ln - 1 january friday
## 82730 4700-4799 telephone rd - 1 january friday
## 82731 5000-5099 wickview ln - 1 january friday
## 82732 1000-1099 ashland st - 1 january friday
## 82733 8300-8399 canyon - 1 january friday
## 82734 9300-9399 rowan ln - 1 january friday
## location address lon lat
## 82729 apartment parking lot 9650 marlive ln -95.43739 29.67790
## 82730 road / street / sidewalk 4750 telephone rd -95.29888 29.69171
## 82731 residence / house 5050 wickview ln -95.45586 29.59922
## 82732 residence / house 1050 ashland st -95.40334 29.79024
## 82733 apartment 8350 canyon -95.37791 29.67063
## 82734 residence / house 9350 rowan ln -95.54830 29.70223
알 수 있습니다. 데이터 세트에는 이미 모든 데이터 항목에 대한 경도 및 위도 좌표가 포함되어 있습니다. 이것은 우리 데이터 셋의 공간적 속성입니다.
다음으로 ggmap 패키지에서베이스 맵 타일을 “끌어 올”수있는 방법에 대한 예를 제공합니다. 아래 코드에서 저는 USA의베이스 맵 타일을 구축했습니다.
# ggmap베이스 맵 플로팅
us <- c(left = -125, bottom = 25.75, right = -67, top = 49)
map <- get_stamenmap(us, zoom = 5, maptype = "toner-lite",legend="none")
plot(map)
그런 다음 “get_stamenmap”함수는 ggmap 패키지에서 가져옵니다.
이제 데이터 세트의 공간 속성을 기반으로 첫 번째 플롯을 만들 준비가되었습니다. 아래는 “범죄”데이터 세트에 제공된 좌표를 기반으로 한 살인 범죄 현장의 분포를 보여줍니다. “qmplot”함수는 ggmap 패키지에서 가져옵니다.
scatterplot_murder <- qmplot(x=lon,y=lat,data=filter(crime,offense=="murder"),legend="none",color=I("darkred"))
plot(scatterplot_murder)
다음으로 히트 맵 (즉, 밀도 플롯)을 그립니다. 이를 위해 “qmplot”함수의 “geom”매개 변수를 “polygon”으로 지정해야합니다. 또한 “stat_density_2d”및 “scale_fill_gradient2″함수를 사용해야합니다. 밀도 추정은 2D 커널 밀도 추정을 기반으로합니다. “stat_density_2d”함수로 계산됩니다.
# ggmap 패키지로 다른 유형의 플롯 생성
densityplot_murder <- qmplot(x=lon, y=lat,
data = filter(crime,offense=="murder"),
geom = "blank",
maptype = "toner-background",
darken = .7,
legend = "topright") + stat_density_2d(aes(fill = ..level..),
geom = "polygon",
alpha = .5,
color = NA) + scale_fill_gradient2(low = "blue",
mid = "green",
high = "red")
plot(densityplot_murder)
이 예에서 시각화는 아직 완벽하지 않으며 더 개선 될 수 있습니다. 이를 수행하는 방법은 예입니다. 밀도 추정 계산을 조정하여.
R의 공간 데이터 시각화에 대한 다른 게시물을 확인하십시오.
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply