Programming/R

[ R ]다양한 시각화 # 7 ggsave() & 지도 공간 기법

yul_S2 2022. 12. 24. 18:38
반응형

(2) ggsave() 함수

그래프를 pdf 또는 이미지 형식( jpg, png 등)의 파일로 저장

이미지의 해상도, 폭, 너비 지정 가능

 

 

# 그래프를 이미지 파일로 저장하기

#1 저장할 그래프

p <- ggplot(diamonds, aes(carat, price, color = cut))
p + geom_point()

 

#2 가장 최근에 그려진 그래프 저장

ggsave(file = "C:/Rwork/output/diamond_price.pdf")
ggsave(file = "C:/Rwork/output.diamond_price.jpg", dp = 72)

 

#3 변수에 저장된 그래프를 이미지 파일로 저장하기

p <- ggplot(diamonds, aes(clarity))
p <- p + geom_bar(aes(fill = cut), position = "fill")
ggsave(file = "C:/Rwork/output/bar.png",
       plot = p, width = 10, height = 5)

 

 

 

지도 공간 기법

# 위도 경도 확인
# microsoft bing -> 지도 -> 우클릭하면 나옴

 

(1) Stamen Maps API 이용

get_ stamenmap()함수

: get_stamenmap(bbox = c(left, bottom, right, top), zoom, maptype, crop, messaging = FALSE, urlonly = FALSE, color = c("color", "bw"), force = FALSE)

 

  • bbox: 지도가 그려질 경계 상자
  • zoom: 확대비율(수치가 작을수록 중심지역 기준으로 확대)
  • maptype: 지도 유형
  • crop: 원시 맵 타일을 지정된 경계 상자로 자른다. FALSE인 경우 결과맵이 지정된 경계상자를 덮는다.
  • messaging: 메시지 켜기/끄기
  • urlonly: url반환
  • color: 컬러 또는 흑백
  • force: 지도가 파일에 있으면 새 지도를 찾아야 할지 여부

 

 

 

# 지도 관련 패키지 설치

library(ggplot2)
install.packages("ggmap")
library(ggmap

 

 

# 위도와 경도 중심으로 지도 시각화

#1 서울을 중심으로 지도 시각화

1-1 서울 지역의 중심 좌표 설정

seoul <- c(left = 126.77, bottom =37.40,right = 127.17,top = 37.70)

 

1-2 zoom, maptype으로 정적 지도 이미지 가져오기

map <- get_stamenmap(seoul,zoom=12,maptype = "terrain")
ggmap(map)

 

 

# 지도 이미지에 레이어 적용

#1 2019년도 1월 대한민국 인구수를 기준으로 지역별 인구수 표시

 

population201901.csv
0.00MB

 

 

1-1 데이터 셋 가져오기

pop <- read.csv("C:/population201901.csv", header = T)
library(stringr)
head(pop)

 

 

1-2 변수명 변경 

region <- pop$"지역명"
lon <- pop$LON
lat <- pop$LAT
tot_pop <- as.numeric(str_replace_all(pop$"총인구수",',',""))

총인구수 쉼표 제거 하고 numeric 으로 변환

 

1-3 데이터 프레임만들기

df <- data.frame(region,lon,lat, tot_pop)
df
df <- df[1:17,]                                                  #18행은 빼기
df

 

 

1-4 정적 지도 이미지 가져오기

daegu <- c(left=123.4423013, bottom=32.8528306,
           right = 131.601445, top = 38.8714354)
map <- get_stamenmap(daegu,zoom=7,maptype = "watercolor")
ggmap(map)

 

1-5 지도 시각화하기

layer1 <- ggmap(map)
layer1

 

1-6포인트 추가

layer2 <- layer1 + geom_point(data=df, aes(x=lon,y=lat,
                                           color = factor(tot_pop),
                                           size = factor(tot_pop)))

layer2

 

1-7 텍스트 추가

layer3 <- layer2 + geom_text(data=df, 
                             aes(x = lon + 0.01,y = lat + 0.08,
                                 label = region, size = 3))
layer3

 

1-8 크기를 지정하여 파일로 저장

ggsave("pop201901.png", scale = 1, width = 10.24, height = 7.68)

 

 

 

반응형