ggplot2를 사용하여 R에서 플롯 매핑

이 게시물에서는 R의 ggplot2 패키지를 사용하여 공간 위치를지도 타일에 그리는 방법을 보여주고 싶습니다.

이를 위해 먼저 관련 패키지를로드합니다. 또한 Open Street Map API를 사용하여 지오 코딩 기능을 정의합니다. 지오 코딩 기능은 https://datascienceplus.com/osm-nominatim-with-r-getting-locations-geo-coordinates-by-its-address/에서 얻었습니다.

다음 단계에서는 ggplot2 패키지의 map_data 함수를 사용하여 플로팅에 적합한 데이터 프레임 형태로지도를 수집합니다. 그런 다음 수동으로 도시 이름 목록을 만들고 지오 코딩 기능을 사용하여 이러한 도시 이름을 좌표로 변환합니다.

ggplot2 및 ggplot2를 사용하여 지오 코딩 된 데이터 포인트가 세계지도에 시각화됩니다.

# 관련 라이브러리 가져 오기
library(ggplot2)
library(ggrepel)

# osm 지오 코더
osm_geocoder <- function(address = NULL)
{
  if(suppressWarnings(is.null(address)))
    return(data.frame())
  
  tryCatch(
    d <- jsonlite::fromJSON( 
      gsub('\\@addr\\@', gsub('\\s+', '\\%20', address), 
           'http://nominatim.openstreetmap.org/search/@addr@?format=json&addressdetails=0&limit=1')
    ), error = function(c) return(data.frame())
  )
  
  if(length(d) == 0) 
    return(data.frame())
  
  return(data.frame(lon = as.numeric(d$lon), lat = as.numeric(d$lat)))
}

# 핵심 부품
# 데이터 준비
world <- map_data("world")

points_df <- data.frame(matrix(nrow=0,ncol=2))
colnames(points_df) <- c("long","lat")
city_list <- c("New York City, New York, USA",
               "Detroit, Michigan, USA",
               "Atlanta, Georgia, USA",
               "Birmingham, Alabama, USA",
               "Miami, Florida, USA",
               "Nashville, Tennessee, USA",
               "Knoxville, Tennessee, USA")

for(i in city_list){
  dum_coord <- osm_geocoder(i)
  points_df <- rbind(points_df,data.frame("long"=c(as.numeric(dum_coord[1])),"lat"=c(as.numeric(dum_coord[2]))))
}

gg_1 <- ggplot(world) +
  geom_polygon(mapping=aes(x=long,y=lat, group=group),fill="white",colour="black")

gg_dots <- gg_1 + geom_point(data=points_df,mapping=aes(x=long, y=lat),colour="red",size=3)

gg_text <- gg_dots + geom_text_repel(data=data.frame("long"=points_df$long,"lat"=points_df$lat,"city"=city_list),
                                                                    mapping=aes(x=long,y=lat,label=c("New York",
                                                                                                     "Detroit",
                                                                                                     "Atlanta",
                                                                                                     "Birmingham",
                                                                                                     "Miami",
                                                                                                     "Nashville",
                                                                                                     "Knoxville")),
                                     color="blue",
                                     size=6)

# 플롯 출력
gg_text

이 게시물이 흥미 로웠다면 deckgl, ggmap 및 Leaflet과 같은 패키지를 사용하여 R의 공간 데이터 시각화에 대한 다른 블로그 항목을 확인하고 싶을 것입니다.

Leave a Reply

답글 남기기

이메일 주소는 공개되지 않습니다.

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

Close

메타