R프로그래밍으로 지도를 그리는 방법을 조금씩 배워가고 있다. 지도 그래프의 핵심은 지역별로 색상을 매핑하는 일이라 생각해서, 관련 ggplot 기능들을 찾아 하나씩 공부하고 있다. 이전에 지도 데이터를 다운받는 방법을 포스팅 했었고, 참고하여 시군구 지도 데이터를 읽어온다.
map1 = read_sf('./sig.shp')
한글 깨짐 문제를 해결하고, 지도 사이즈가 크니 0.001 만큼 줄인다.
map3 = map1 |>
mutate(SIG_KOR_NM = iconv(SIG_KOR_NM, from = "EUC-KR", to = 'UTF-8')) |>
st_set_crs(5179) |>
ms_simplify(keep = 0.001, keep_shapes = T)
데이터만 준비되었다면, 2줄로도 지도가 그려진다.
ggplot(map3) +
geom_sf()
fill 에 컬럼을 매핑하면 자동으로 색상이 매핑한다. 이 기본색상 말고 다른 테마를 사용하고 싶다면, scale_fill_viridis_d
을 사용해보자.
ggplot(map3) +
geom_sf(aes(fill = SIG_CD)) +
theme(legend.position = "none")
scale_fill_viridis_d
scale_fill_viridis_d
함수는 컬러와 흑백 모두에서 지각적으로 균일한 컬러 맵을 제공하며, 또한 일반적인 형태의 색맹을 가진 시청자가 인식할 수 있도록 설계되었다고 한다. scale_fill_viridis_d
는 이산적인(범주형) 데이터(대표적으로 코드나 문자열)에 대한 색상을 조절하는데 사용된다. 그리고 scale_fill_viridis_c
도 있는데, 이건 연속적인 데이터(대표적으로 숫자나 날짜)를 가지고 색상을 매핑할 때 사용될 뿐 기본 사용법은 동일하다.
함수내 option
파라메터는 색상테마를 나타내는 문자열이다. 8가지 옵션을 사용할 수 있고, A~H 알파벳으로 입력하면 된다.
ggplot(map3) +
geom_sf(aes(fill = SIG_CD)) +
scale_fill_viridis_d(option = "A") + # A ~ H 입력.
theme(legend.position = "none")
색상의 범위는 0~1 이 기준인데, 여기서 너무 양극단의 색이 싫다면 begin, end 파라메터를 이용해서 범위를 줄이면 된다.
ggplot(map3) +
geom_sf(aes(fill = SIG_CD)) +
scale_fill_viridis_d(begin = 0.5, end = 1) +
theme(legend.position = "none")