서울시 선거구지도를 그려봤으니, 경기도 선거구까지만 지도로 표현해보려고 했는데, 몇가지 문제가 생겼다. 안산시 선거구를 그릴때, 행정동 정보를 이용해서 그룹화해서 경계를 병합하여 아래 그림과 같이 그릴 수 있었다. 그런데 좌측하단에 작은 섬이 하나 포함되면서 전체적으롤 지도가 넓은지역을 포함해야 하다보니 공백영역이 많아 보여 효율적인 표현이 어려웠다.
[더 읽기]국회위원선거 서울특별시 선거구 지도 만들기
R프로그래밍 언어의 ggplot2
, sf
패키지 등을 이용해서 제22대 총선 선거구 지도를 그려볼까한다. 전국지도를 다 그릴수는 없고, 서울특별시만 대상으로 데이터를 가공해서 그려보았다. 디자인은 최근 여론조사들을 참고했고, 왼쪽에는 전체 서울시의 지도를, 오른쪽은 특정 선거구를 그려보았다.
(ggplot2) 래스터(Raster) 데이터로 지도 그리기
지도 데이터는 벡터(Vector) 또는 래스터(Raster) 데이터로 나뉜다. 이 포스팅에서는 래스터(Raster) 데이터를 이용하여 지도를 그려볼까한다. 래스터(Raster) 데이터 모델은 셀의 연속 그리드로 공간을 나타낸다. raster 데이터를 읽고 활용할 수 있는 패키지는 대표적으로 terra
와 raster
정도 있다. 각각 함수명이나 파라메터 사용법 정도 다를 뿐 원리는 동일하다. 하나씩 알아보려 한다.
(ggplot2) SF 패키지 공간 관계 표현하기
sf
패키지는 공간 영역간에 겹치는 부분, 혹은 그 특정 경계내에만 위치하는 특정 공간을 표시하는 등의 공간간 연산 작업을 아주 쉽게 수행할 수 있도록 기능을 제공하고 있다. 예를 들어 특정 프랜차이즈 가맹점을 전국 지도에 x 로 모두 표시했는데, 서울 영등포구안에 있는 가맹점만 지도에 표시하고 싶을 때, sf
패지키의 공간간의 관계연산을 통해 쉽게 필터링 할 수 있다.
(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 배율로 줄이는 작업을 한다. 그래야 지도의 선들이 깔끔하게 그려지기도 하고 랜더링 시간도 단축되기 때문이다. 그런데, 이렇게 하면 작은 섬들은 제거되는데 그중에 독도가 없어져 버린다. 보통 일기예보나 뉴스에서 보는 지도에서 울릉도나 독도는 별도로 덧붙이거나 조금 크기를 키워 조정하는 지도라 보면 된다.
[더 읽기]