Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
blog:draft:excel_cartogram [2020/04/05 07:38] – [지도 모양] prgramblog:draft:excel_cartogram [2025/07/07 14:12] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== 한국지도 카토그램 엑셀버전 ====== ====== 한국지도 카토그램 엑셀버전 ======
  
-https://pinkwink.kr/1005+지도에 들어 있는 많은 정보를 말로 표현하려면 엄청 어렵겠지요. 그런 면에서 지도는 가장 오래된 시각화 방법 중 하나입니다.
  
-카토그램(영어: cartogram)은 의석수나 선거단수, 인구 등의 특정한 데이터 값의 변화에 따라 지도의 면적이 왜곡는 그림을 말한다. 변량비례도(變量比例圖), 왜상 통계 지도(歪像統計地圖)라고도 한다. [[https://ko.wikipedia.org/wiki/%EC%B9%B4%ED%86%A0%EA%B7%B8%EB%9E%A8|위키백과:카토그램]]+하지만 일반적인 지도는 면적만을 기반으로 하고 있기 때문에 다른 면을 왜곡시키기도 합니다. 보통은 인구에 비례한 지표들을 많이 보고 있기 때문에시각화 방법 중 인구 등 특정 데이터 값에 따라 면적을 왜곡는 방법을 사용합니다. 이를 카토그램이라고 합니다.
  
 +> 카토그램(영어: cartogram)은 의석수나 선거인단수, 인구 등의 특정한 데이터 값의 변화에 따라 지도의 면적이 왜곡되는 그림을 말한다. 변량비례도(變量比例圖), 왜상 통계 지도(歪像統計地圖)라고도 한다. (([[https://ko.wikipedia.org/wiki/%EC%B9%B4%ED%86%A0%EA%B7%B8%EB%9E%A8|위키백과:카토그램]]))
 +
 +카토그램의 예시들은 많습니다.
 +[[https://www.nytimes.com/interactive/2016/11/01/upshot/many-ways-to-map-election-results.html?_r=0|선거 결과를 표현하기 위한 뉴욕타임즈의 방법]]
 +[[http://news.kbs.co.kr/news/view.do?ncd=3264019|한국 선거결과 지도]]
 +[[https://www.vw-lab.com/40|한국 선거결과를 표현하기 위한 노력들]]
 +[[http://slownews.kr/38894|터미널 롯데리아, 동네 맥도날드, 강남 버거킹?]]
 +
 +이 중에 가장 범용적으로 사용할 만한 마지막의 행정구역별 표시방법을 엑셀에서 사용할 수 있는 툴을 만들어보았습니다. 파이썬, R 등 많은 툴들이 있지만 가장 범용적이고 일반적으로 사용하기 쉬운 툴이 엑셀이니까요.
 +파이썬으로 그리는 방법은 [[https://nbviewer.jupyter.org/gist/hyeshik/cf9f3d7686e07eedbfda?revision=6|장혜식님(처음 기사 나올 땐 생명공학도였는데, 교수님이 되셨네요)]] [[https://pinkwink.kr/1005|PinkWink]] 에서 확인하실 수 있습니다.
 +
 +{{ :blog:draft:cartogram_excel.gif |}}
 +
 +
 +엑셀파일 다운로드는 가장 아래 부분에 있습니다.
  
 ===== How to Use ===== ===== How to Use =====
Line 11: Line 26:
 {{ :blog:draft:pasted:20200405-162915.png }} {{ :blog:draft:pasted:20200405-162915.png }}
  
-EXECUTION 부분은 실행 버튼입니다.+**EXECUTION** 부분은 실행 버튼입니다.
   * INITIAL : 아래 Config 부분의 CELLS와 BORDER 부분을 서식으로 하여 지도를 초기화 하는 버튼입니다.   * INITIAL : 아래 Config 부분의 CELLS와 BORDER 부분을 서식으로 하여 지도를 초기화 하는 버튼입니다.
   * MAKE CHART : 테이블의 color_idx 부분과 Config 부분의 Color INDEX 부분을 참고하여 색을 칠하는 버튼입니다.   * MAKE CHART : 테이블의 color_idx 부분과 Config 부분의 Color INDEX 부분을 참고하여 색을 칠하는 버튼입니다.
  
-Config 부분은 여러가지 서식을 지정하는 부분입니다.+**Config** 부분은 여러가지 서식을 지정하는 부분입니다.
   * CELLS : 기본 셀 서식을 지정합니다. 이 부분을 서식복사하여 지도를 초기화합니다.   * CELLS : 기본 셀 서식을 지정합니다. 이 부분을 서식복사하여 지도를 초기화합니다.
   * BORDER : 시도경계 선 양식을 지정합니다. 시도경계에 이 부분의 선 굵기, 색을 사용합니다.   * BORDER : 시도경계 선 양식을 지정합니다. 시도경계에 이 부분의 선 굵기, 색을 사용합니다.
   * Color INDEX : 테이블 value 컬럼의 값을 기준으로 Condition 별로 색을 지정합니다. 엑셀의 countif 함수에 적용되는 조건식을 사용할 수 있습니다.   * Color INDEX : 테이블 value 컬럼의 값을 기준으로 Condition 별로 색을 지정합니다. 엑셀의 countif 함수에 적용되는 조건식을 사용할 수 있습니다.
  
-테이블 부분에서 value-comment 까지는(노란색 표시) 지도의 각 셀에 적용되는 부분입니다.+**테이블 부분에서 value-comment 까지는(노란색 표시)** 지도의 각 셀에 적용되는 부분입니다.
   * value : color INDEX config와 연관되는 값을 채우면 됩니다.   * value : color INDEX config와 연관되는 값을 채우면 됩니다.
   * fill : 각 셀에 어떤 글자를 넣을 것인지 채우면 됩니다.   * fill : 각 셀에 어떤 글자를 넣을 것인지 채우면 됩니다.
Line 30: Line 45:
 ''파일 내 [box_maker Module] 확인'' ''파일 내 [box_maker Module] 확인''
  
-1) 먼저 옆에 그림을 놓고 똑같이 값을 입력합니다. +**1) 먼저 옆에 그림을 놓고 똑같이 값을 입력합니다. ** 
-2) 아래 매크로를 실행하면 값이 입력된 부분만 row와 column 번호 및 셀 값을 테이블 형식으로 저장합니다. +**2) 아래 매크로를 실행하면 값이 입력된 부분만 row와 column 번호 및 셀 값을 테이블 형식으로 저장합니다.** 
-{{ :blog:draft:pasted:20200405-161428.png?300 }}+{{ :blog:draft:pasted:20200405-161428.png?400 }}
 <code vb> <code vb>
 '' 지도에 값 입력한 후 값 있는 곳만 Table에 입력 '' 지도에 값 입력한 후 값 있는 곳만 Table에 입력
Line 50: Line 65:
 </code> </code>
  
-3) 테이블에서 입력된 row, column 번호에 따라서 아래와 같이 엑셀 함수로 주소를 구해줍니다.+**3) 테이블에서 입력된 row, column 번호에 따라서 아래와 같이 엑셀 함수로 각 셀의 주소를 구해줍니다.**
 (W3 : row 번호, X3 : column번호, D3 : 지도 시작 셀 주소) (W3 : row 번호, X3 : column번호, D3 : 지도 시작 셀 주소)
 <code vb> <code vb>
Line 56: Line 71:
 </code> </code>
  
-4) 이제 지도를 보고 다시 똑같이 시도 경계를 그려줍니다. 이 때 가장 두꺼운 선 두께로 그리도록 합시다.+**4) 이제 지도를 보고 다시 똑같이 시도 경계를 그려줍니다. 이 때 가장 두꺼운 선 두께로 그리도록 합시다.**
 그리고 아래 코드를 실행시키면, 셀 별로 선의 두께를 확인한 후 left-right-top-bottom 중 어디에 경계 선을 그리면 될지, 테이블에 값을 입력합니다. 그리고 아래 코드를 실행시키면, 셀 별로 선의 두께를 확인한 후 left-right-top-bottom 중 어디에 경계 선을 그리면 될지, 테이블에 값을 입력합니다.
 <code vb> <code vb>
Line 82: Line 97:
 </code> </code>
  
-5) 테이블에 기타 필요한 컬럼 (셀 색, 기준 값, 셀에 들어갈 문구 등..)을 만들어 테이블을 완성합니다. (W:AJ 영역)+**5) 테이블에 기타 필요한 컬럼 (셀 색, 기준 값, 셀에 들어갈 문구 등..)을 만들어 테이블을 완성합니다. (W:AJ 영역)**
 color_idx 에서는 value 값을 참고해서 Config 내의 Color INDEX 테이블 내의 색 번호를 가져와야 합니다. 아래와 같이 엑셀의 countif함수를 응용하여 함수를 만들어 사용했습니다. color_idx 에서는 value 값을 참고해서 Config 내의 Color INDEX 테이블 내의 색 번호를 가져와야 합니다. 아래와 같이 엑셀의 countif함수를 응용하여 함수를 만들어 사용했습니다.
 VS_COLOR : Color INDEX 테이블 범위(이름정의) VS_COLOR : Color INDEX 테이블 범위(이름정의)
Line 107: Line 122:
 ※ 참고 : get_col_index 는 테이블 내에서 컬럼명을 찾아서 몇번째 있는지 리턴해 주는 함수입니다.(아래 설명에서는 생략) ※ 참고 : get_col_index 는 테이블 내에서 컬럼명을 찾아서 몇번째 있는지 리턴해 주는 함수입니다.(아래 설명에서는 생략)
  
-1) 지도 초기화 하기+===1) 지도 초기화 하기===
 먼저 VS_TABLE 내에서 address 컬럼을 찾아서, 그 주소에 있는 셀에 VS_CELL을 서식 복사하는 내용입니다. 먼저 VS_TABLE 내에서 address 컬럼을 찾아서, 그 주소에 있는 셀에 VS_CELL을 서식 복사하는 내용입니다.
 이름 정의는 아래와 같습니다. 이름 정의는 아래와 같습니다.
Line 169: Line 184:
  
  
-2) 지도 색칠하기+===2) 지도 색칠하기===
 테이블 내에  color_index 컬럼에 있는 번호를 색 옵션 테이블에서 찾아서 셀을 색칠해 주는 부분입니다. 테이블 내에  color_index 컬럼에 있는 번호를 색 옵션 테이블에서 찾아서 셀을 색칠해 주는 부분입니다.
 VS_COLOR : 테이블의 color_index 컬럼에 있는 번호별 셀 색을 지정해 놓은 테이블(이름정의, U17:U21) VS_COLOR : 테이블의 color_index 컬럼에 있는 번호별 셀 색을 지정해 놓은 테이블(이름정의, U17:U21)
Line 193: Line 208:
  
  
-3) 툴팁Tooltip 지정하기+===3) 툴팁Tooltip 생성하기===
 처음에는 엑셀의 메모 기능을 이용하려 했으나, 메모 기능을 사용하면 셀 우측 코너에 삼각형 모양이 생겨서 지도의 가독성이 떨어지는 문제가 있습니다. 처음에는 엑셀의 메모 기능을 이용하려 했으나, 메모 기능을 사용하면 셀 우측 코너에 삼각형 모양이 생겨서 지도의 가독성이 떨어지는 문제가 있습니다.
 그래서 유효성 검사를 사용했을 때 나오는 부분을 툴팁으로 이용하기로 했습니다. 그래서 유효성 검사를 사용했을 때 나오는 부분을 툴팁으로 이용하기로 했습니다.
Line 230: Line 245:
 End Sub End Sub
 </code> </code>
 +
 +
 +===== 다운로드 =====
 +매크로 사용을 활성화시키신 후 사용하시면 됩니다.
 +<wrap center round download 60%>
 +{{ :blog:excel_cartogram_200304.zip |excel_cartogram_200304.zip}} \\
 +</wrap>
 +
 +===== References =====
 +[[https://nbviewer.jupyter.org/gist/hyeshik/cf9f3d7686e07eedbfda?revision=6|장혜식님]] 
 +[[https://pinkwink.kr/1005|PinkWink]] 
 +
 +==== More ====
 +{{topic>blog blogs -tag1 &desc&nocomment&nodesc&notags}}
  
 {{tag>blog data_analysis visuialization 엑셀 시각화 지도 엑셀 VBA}} {{tag>blog data_analysis visuialization 엑셀 시각화 지도 엑셀 VBA}}
  • blog/draft/excel_cartogram.1586072285.txt.gz
  • Last modified: 2025/07/07 14:12
  • (external edit)