회원정보, 수납내역, 일정관리 등 간단한 사이트를 개발한 적이 있는데, MongoDB 를 사용하여 데이터를 관리하고 있다. 월별로 수납정보를 피벗테이블 형태로 바꾸어 보여줘야 할 일이 생겼다. MongoDB 의 aggregate 함수를 이용해서 구현할 수 있었는데, 생각보다 소스가 너무 길어져서 mongoDB 를 괜히 사용했나 싶은 생각까지 들었다. 그 힘들었던 과정을 스탭별로 정리하기로 했다.
(ggplot2) 지도 여러개를 하나로 묶어 그리기
저번 포스팅에서 외식비 관련해서 지도 그래프를 하나만 그렸었었다. 그런데 외식비 통계에 보면 냉면, 비빔밥, 삽겹살 등 종류가 다양하기 때문에 종류별로 지도를 하나로 묶어 표현하는게 좋을거 같았다. shp 지도파일만 있으면 ggplot을 이용해서 여러 그래프를 한판에 그릴 수 있다.
[더 읽기](ggplot2) 지도에서 지역별 경계 합치기
한국소비자원에서 외식비 관련 통계를 가지고 지도그래프를 그릴까 했는데, 데이터에 세종시가 없었다. 내가 받은 shp 지도파일은 세종시가 별도로 있다보니, 충남지역에 넣어 경계를 합쳐야만 했다. sf 패키지에서는 영역을 합칠때, st_union 을 사용하면 된다. (ggplot2) 벤다이어그램 그리기 포스팅에 사용법을 정리해놓았다.
[더 읽기](ggplot2) scales 패키지 사용 예제
scales 패키지는 ggplot2에서 사용되는 스케일 조정을 위한 일련의 함수들을 포함하고 있다. 이 패키지는 그래프의 축, 색상, 크기 등 다양한 속성들을 효과적으로 조절할 수 있도록 도와주며, 일반적으로 ggplot2 그래픽을 더 세밀하게 제어할 때 유용하다. 어떻게 기능이 동작하는지 예제만 봐도 이해가 된다.
(ggplot2) x/y 축 레이블 스케일(단위) 변경하기
그래프를 그리다보면, 가장 어려운 부분 중 하나는 데이터 값을 인식 가능한 속성이나 단위로 변환하는 것이다. scales 패키지는 ggplot2에서 스케일링 기능을 제공하며, 기본 나누기, 레이블, 변환 및 팔레트를 재정의할 수 있는 도구를 제공한다. 아래 코딩예시들은 Label numbers in decimal format 문서의 예시를 참고하였다.
(ggplot2) 벤다이어그램 그리기 - 교집합,합집합,차집합
(ggplot2) 대한민국 독도 지도 그리기
대한민국 시군구 지도 데이터는 방대해서, 보통 0.001 배율로 줄이는 작업을 한다. 그래야 지도의 선들이 깔끔하게 그려지기도 하고 랜더링 시간도 단축되기 때문이다. 그런데, 이렇게 하면 작은 섬들은 제거되는데 그중에 독도가 없어져 버린다. 보통 일기예보나 뉴스에서 보는 지도에서 울릉도나 독도는 별도로 덧붙이거나 조금 크기를 키워 조정하는 지도라 보면 된다.
[더 읽기](ggplot2) 지도위에 특정 위치 표시하기
특정 위치를 표시하기 위해서는 숫자로 경도/위도를 표시만 해서는 안되고, sf 객체로 바꿔야 한다. Simple features(sf)는 점(points), 선(lines), 다각형(polygons) 등 공간 데이터를 다루기 위한 패키지이다. 특히 sf 패키지는 ggplot2와 연동하여 공간 데이터의 시각적 표현이 용이하다.
(ggplot2) coord_sf 지도 CRS, Datum 설정하기
coord_sf() 함수는 ggplot2 패키지에서 사용되는 함수로, Simple Features (sf) 객체를 사용하여 지리적인 데이터를 시각화할 때 좌표 참조 체계와 관련된 설정을 셋팅하는데 사용된다. 이 함수를 사용하여 x와 y 축의 좌표 및 투영(projection) 등을 조절할 수 있다.
(ggplot2) scale_fill_viridis_d 지도 색상 설정
R프로그래밍으로 지도를 그리는 방법을 조금씩 배워가고 있다. 지도 그래프의 핵심은 지역별로 색상을 매핑하는 일이라 생각해서, 관련 ggplot 기능들을 찾아 하나씩 공부하고 있다. 이전에 지도 데이터를 다운받는 방법을 포스팅 했었고, 참고하여 시군구 지도 데이터를 읽어온다.
[더 읽기]