ggmap을 사용하여 R의지도 기반 포인트 및 밀도 플롯

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의 공간 데이터 시각화에 대한 다른 게시물을 확인하십시오.

You May Also Like

Leave a Reply

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.