Portfolio — District cartogram

Two hundred forty-five

The whole country divided into 245 hexagons — one per district, each placed from a centroid computed off the boundary file. No name is visible. Hover one.


Brokerages per 10,000 residents · by district

Colour is the value, and it took two wrong answers to get here. Hexagon size came first: four districts in central Seoul (Jung-gu 39.8, Gangnam 37.0, Yongsan 34.0, Seocho 31.3) own the top of the range, which squeezed the other eighty percent of the country into radii between 0.36 and 0.72 of full — invisible across 196 touching tiles. Seven classes of equal count came next. The counts were perfect and the widths were not: 5.0, 3.9, 2.4, 2.1, 2.3, 2.5 — and then 20.6, a top class wider than the other six together, which is why 19.3 and 39.8 were the same colour. These are natural breaks now (Fisher-Jenks, eight classes), cut so that the squared deviation inside each class is as small as it can be — asking the data where it separates instead of telling it. What that costs is even counts: the top two classes hold nine districts between them, so area on this map is proportional to nothing. The legend therefore prints the count in each class, and every exact number is one hover away.

Click a hexagon to open that district’s 읍면동 grid. A dimmed cell has fewer than five 읍면동 with an office, so there is no grid behind it.

245 districts · one cell per district, coloured by offices per 10,000 residents.

강원특별자치도 양구군 · 2.9경기도 파주시 · 13.6경기도 연천군 · 14.8경기도 동두천시 · 13.3경기도 포천시 · 18.1강원특별자치도 철원군 · 7.3강원특별자치도 고성군 · 10.3경기도 고양시덕양구 · 14.9경기도 양주시 · 13.3서울특별시 도봉구 · 12.8경기도 의정부시 · 12.6경기도 가평군 · 15.0강원특별자치도 화천군 · 6.1강원특별자치도 인제군 · 6.2인천광역시 옹진군 · 9.3경기도 고양시일산서구 · 15.4경기도 고양시일산동구 · 17.9서울특별시 은평구 · 17.7서울특별시 종로구 · 30.5서울특별시 강북구 · 16.1서울특별시 노원구 · 11.8경기도 남양주시 · 14.0강원특별자치도 춘천시 · 12.5강원특별자치도 속초시 · 18.0인천광역시 강화군 · 26.7경기도 김포시 · 17.4서울특별시 강서구 · 17.5서울특별시 마포구 · 25.7서울특별시 서대문구 · 17.6서울특별시 성북구 · 15.4서울특별시 동대문구 · 19.4서울특별시 중랑구 · 14.9경기도 구리시 · 18.0강원특별자치도 홍천군 · 11.7강원특별자치도 양양군 · 10.3인천광역시 계양구 · 13.0서울특별시 양천구 · 17.5서울특별시 영등포구 · 22.3서울특별시 중구 · 39.8서울특별시 성동구 · 22.7서울특별시 광진구 · 20.9서울특별시 강동구 · 19.0경기도 하남시 · 19.1강원특별자치도 횡성군 · 14.5강원특별자치도 강릉시 · 12.3강원특별자치도 동해시 · 5.0경상북도 울릉군 · 5.7인천광역시 부평구 · 14.4경기도 부천시오정구 · 18.3서울특별시 구로구 · 15.9서울특별시 동작구 · 17.1서울특별시 용산구 · 34.0서울특별시 강남구 · 37.0서울특별시 송파구 · 20.1경기도 광주시 · 15.4경기도 양평군 · 21.4강원특별자치도 평창군 · 11.3강원특별자치도 정선군 · 4.0경기도 부천시원미구 · 18.6경기도 광명시 · 17.3서울특별시 금천구 · 20.2서울특별시 관악구 · 14.2서울특별시 서초구 · 31.3경기도 성남시수정구 · 20.1경기도 성남시중원구 · 22.0경기도 여주시 · 15.5강원특별자치도 원주시 · 14.8강원특별자치도 영월군 · 6.7강원특별자치도 삼척시 · 5.7경기도 부천시소사구 · 14.1경기도 안양시만안구 · 16.1경기도 안양시동안구 · 19.5경기도 과천시 · 20.2경기도 용인시수지구 · 13.3경기도 성남시분당구 · 19.0경기도 이천시 · 15.8충청북도 충주시 · 13.7충청북도 단양군 · 8.7경상북도 봉화군 · 5.0강원특별자치도 태백시 · 2.4인천광역시 연수구 · 15.7인천광역시 남동구 · 13.2경기도 시흥시 · 19.3경기도 군포시 · 15.2경기도 의왕시 · 14.1경기도 수원시장안구 · 14.8경기도 용인시기흥구 · 12.8경기도 용인시처인구 · 18.9충청북도 음성군 · 14.5충청북도 괴산군 · 8.6충청북도 제천시 · 9.9경상북도 영주시 · 8.9경상북도 영양군 · 1.9경상북도 울진군 · 4.3충청남도 태안군 · 11.9경기도 안산시단원구 · 18.1경기도 안산시상록구 · 12.4경기도 수원시권선구 · 14.6경기도 수원시팔달구 · 21.3경기도 수원시영통구 · 16.7경기도 안성시 · 17.4충청북도 진천군 · 11.0충청북도 증평군 · 10.6경상북도 문경시 · 10.8경상북도 예천군 · 7.7경상북도 안동시 · 7.2경상북도 영덕군 · 5.8충청남도 당진시 · 15.6경기도 평택시 · 21.7경기도 오산시 · 11.4충청남도 천안시서북구 · 20.6충청북도 청주시흥덕구 · 18.5충청북도 청주시상당구 · 12.1충청북도 보은군 · 7.3경상북도 상주시 · 8.4경상북도 의성군 · 5.6대구광역시 군위군 · 14.6경상북도 청송군 · 7.4경상북도 포항시북구 · 15.2충청남도 서산시 · 13.8충청남도 예산군 · 10.5충청남도 아산시 · 17.3충청남도 천안시동남구 · 14.8세종특별자치시 세종시 · 21.5대전광역시 대덕구 · 12.6충청북도 옥천군 · 3.2경상북도 구미시 · 14.4경상북도 칠곡군 · 15.1대구광역시 북구 · 13.4경상북도 영천시 · 12.0경상북도 포항시남구 · 11.3충청남도 홍성군 · 8.9충청남도 청양군 · 6.3충청남도 공주시 · 13.9대전광역시 유성구 · 19.0대전광역시 동구 · 14.1충청북도 영동군 · 5.8경상북도 김천시 · 11.0대구광역시 서구 · 12.1대구광역시 중구 · 24.1대구광역시 동구 · 14.7경상북도 경주시 · 10.5충청남도 보령시 · 8.1충청남도 부여군 · 5.7충청남도 계룡시 · 10.0대전광역시 서구 · 16.9대전광역시 중구 · 13.5경상북도 성주군 · 9.4대구광역시 달서구 · 14.3대구광역시 남구 · 14.1대구광역시 수성구 · 19.7경상북도 경산시 · 16.8울산광역시 중구 · 11.7울산광역시 북구 · 10.7충청남도 서천군 · 5.6전북특별자치도 익산시 · 10.9충청남도 논산시 · 8.5전북특별자치도 완주군 · 11.9충청남도 금산군 · 10.4전북특별자치도 무주군 · 5.1경상북도 고령군 · 9.5대구광역시 달성군 · 14.7경상북도 청도군 · 8.3경상남도 양산시 · 16.7울산광역시 울주군 · 15.0울산광역시 동구 · 7.7전북특별자치도 군산시 · 17.4전북특별자치도 김제시 · 6.9전북특별자치도 전주시덕진구 · 20.9전북특별자치도 전주시완산구 · 20.5전북특별자치도 진안군 · 3.6경상남도 거창군 · 6.8경상남도 합천군 · 5.4경상남도 창녕군 · 11.6경상남도 밀양시 · 14.7부산광역시 북구 · 10.6부산광역시 금정구 · 16.9울산광역시 남구 · 21.3전북특별자치도 부안군 · 10.0전북특별자치도 정읍시 · 6.1전북특별자치도 임실군 · 4.0전북특별자치도 장수군 · 4.7경상남도 함양군 · 6.3경상남도 의령군 · 4.1경상남도 창원시의창구 · 16.2경상남도 김해시 · 17.1부산광역시 부산진구 · 16.3부산광역시 동래구 · 18.3부산광역시 해운대구 · 18.4부산광역시 기장군 · 16.4전북특별자치도 고창군 · 8.0전남광주통합특별시 장성군 · 10.0전남광주통합특별시 담양군 · 10.9전북특별자치도 순창군 · 1.1전북특별자치도 남원시 · 5.8경상남도 산청군 · 9.2경상남도 진주시 · 19.0경상남도 함안군 · 16.9경상남도 창원시성산구 · 19.0부산광역시 사상구 · 12.5부산광역시 동구 · 13.7부산광역시 연제구 · 17.9부산광역시 수영구 · 22.1전남광주통합특별시 영광군 · 4.5전남광주통합특별시 광산구 · 20.9전남광주통합특별시 서구 · 23.7전남광주통합특별시 북구 · 17.2전남광주통합특별시 곡성군 · 5.1전남광주통합특별시 구례군 · 5.3경상남도 하동군 · 8.3경상남도 창원시마산합포구 · 13.8경상남도 창원시마산회원구 · 12.2부산광역시 강서구 · 28.4부산광역시 서구 · 10.3부산광역시 중구 · 23.5부산광역시 남구 · 15.2전남광주통합특별시 함평군 · 6.1전남광주통합특별시 남구 · 16.0전남광주통합특별시 동구 · 25.9전남광주통합특별시 화순군 · 10.5전남광주통합특별시 순천시 · 13.3전남광주통합특별시 광양시 · 11.7경상남도 사천시 · 12.4경상남도 고성군 · 8.3경상남도 창원시진해구 · 12.4부산광역시 영도구 · 10.4전남광주통합특별시 신안군 · 2.4전남광주통합특별시 무안군 · 14.2전남광주통합특별시 나주시 · 13.1전남광주통합특별시 보성군 · 2.9전남광주통합특별시 여수시 · 8.1경상남도 남해군 · 6.8경상남도 통영시 · 9.1부산광역시 사하구 · 12.2경상남도 거제시 · 10.0전남광주통합특별시 목포시 · 13.5전남광주통합특별시 영암군 · 5.2전남광주통합특별시 장흥군 · 4.4전남광주통합특별시 고흥군 · 3.6전남광주통합특별시 진도군 · 4.0전남광주통합특별시 해남군 · 6.0전남광주통합특별시 강진군 · 4.1전남광주통합특별시 완도군 · 2.3제주특별자치도 제주시 · 22.7제주특별자치도 서귀포시 · 16.2

Eight natural-break classes · start value, then count

  1. 1.141
  2. 6.727
  3. 9.946
  4. 13.056
  5. 16.243
  6. 19.723
  7. 25.76
  8. 34.03

39.8

See all of them in rank order
  1. 중구 · 39.8
  2. 강남구 · 37.0
  3. 용산구 · 34.0
  4. 서초구 · 31.3
  5. 종로구 · 30.5
  6. 강서구 · 28.4
  7. 강화군 · 26.7
  8. 동구 · 25.9
  9. 마포구 · 25.7
  10. 중구 · 24.1
  11. 서구 · 23.7
  12. 중구 · 23.5
  13. 제주시 · 22.7
  14. 성동구 · 22.7
  15. 영등포구 · 22.3
  16. 수영구 · 22.1
  17. 성남시중원구 · 22.0
  18. 평택시 · 21.7
  19. 세종시 · 21.5
  20. 양평군 · 21.4
  21. 남구 · 21.3
  22. 수원시팔달구 · 21.3
  23. 광산구 · 20.9
  24. 전주시덕진구 · 20.9
  25. 광진구 · 20.9
  26. 천안시서북구 · 20.6
  27. 전주시완산구 · 20.5
  28. 과천시 · 20.2
  29. 금천구 · 20.2
  30. 성남시수정구 · 20.1
  31. 송파구 · 20.1
  32. 수성구 · 19.7
  33. 안양시동안구 · 19.5
  34. 동대문구 · 19.4
  35. 시흥시 · 19.3
  36. 하남시 · 19.1
  37. 강동구 · 19.0
  38. 진주시 · 19.0
  39. 성남시분당구 · 19.0
  40. 창원시성산구 · 19.0
  41. 유성구 · 19.0
  42. 용인시처인구 · 18.9
  43. 부천시원미구 · 18.6
  44. 청주시흥덕구 · 18.5
  45. 해운대구 · 18.4
  46. 부천시오정구 · 18.3
  47. 동래구 · 18.3
  48. 안산시단원구 · 18.1
  49. 포천시 · 18.1
  50. 구리시 · 18.0
  51. 속초시 · 18.0
  52. 고양시일산동구 · 17.9
  53. 연제구 · 17.9
  54. 은평구 · 17.7
  55. 서대문구 · 17.6
  56. 양천구 · 17.5
  57. 강서구 · 17.5
  58. 군산시 · 17.4
  59. 안성시 · 17.4
  60. 김포시 · 17.4
  61. 아산시 · 17.3
  62. 광명시 · 17.3
  63. 북구 · 17.2
  64. 김해시 · 17.1
  65. 동작구 · 17.1
  66. 서구 · 16.9
  67. 함안군 · 16.9
  68. 금정구 · 16.9
  69. 경산시 · 16.8
  70. 수원시영통구 · 16.7
  71. 양산시 · 16.7
  72. 기장군 · 16.4
  73. 부산진구 · 16.3
  74. 서귀포시 · 16.2
  75. 창원시의창구 · 16.2
  76. 안양시만안구 · 16.1
  77. 강북구 · 16.1
  78. 남구 · 16.0
  79. 구로구 · 15.9
  80. 이천시 · 15.8
  81. 연수구 · 15.7
  82. 당진시 · 15.6
  83. 여주시 · 15.5
  84. 광주시 · 15.4
  85. 성북구 · 15.4
  86. 고양시일산서구 · 15.4
  87. 포항시북구 · 15.2
  88. 군포시 · 15.2
  89. 남구 · 15.2
  90. 칠곡군 · 15.1
  91. 가평군 · 15.0
  92. 울주군 · 15.0
  93. 고양시덕양구 · 14.9
  94. 중랑구 · 14.9
  95. 연천군 · 14.8
  96. 수원시장안구 · 14.8
  97. 천안시동남구 · 14.8
  98. 원주시 · 14.8
  99. 밀양시 · 14.7
  100. 동구 · 14.7
  101. 달성군 · 14.7
  102. 군위군 · 14.6
  103. 수원시권선구 · 14.6
  104. 횡성군 · 14.5
  105. 음성군 · 14.5
  106. 구미시 · 14.4
  107. 부평구 · 14.4
  108. 달서구 · 14.3
  109. 무안군 · 14.2
  110. 관악구 · 14.2
  111. 의왕시 · 14.1
  112. 남구 · 14.1
  113. 부천시소사구 · 14.1
  114. 동구 · 14.1
  115. 남양주시 · 14.0
  116. 공주시 · 13.9
  117. 서산시 · 13.8
  118. 창원시마산합포구 · 13.8
  119. 동구 · 13.7
  120. 충주시 · 13.7
  121. 파주시 · 13.6
  122. 목포시 · 13.5
  123. 중구 · 13.5
  124. 북구 · 13.4
  125. 동두천시 · 13.3
  126. 순천시 · 13.3
  127. 양주시 · 13.3
  128. 용인시수지구 · 13.3
  129. 남동구 · 13.2
  130. 나주시 · 13.1
  131. 계양구 · 13.0
  132. 도봉구 · 12.8
  133. 용인시기흥구 · 12.8
  134. 대덕구 · 12.6
  135. 의정부시 · 12.6
  136. 사상구 · 12.5
  137. 춘천시 · 12.5
  138. 사천시 · 12.4
  139. 안산시상록구 · 12.4
  140. 창원시진해구 · 12.4
  141. 강릉시 · 12.3
  142. 창원시마산회원구 · 12.2
  143. 사하구 · 12.2
  144. 청주시상당구 · 12.1
  145. 서구 · 12.1
  146. 영천시 · 12.0
  147. 태안군 · 11.9
  148. 완주군 · 11.9
  149. 노원구 · 11.8
  150. 광양시 · 11.7
  151. 홍천군 · 11.7
  152. 중구 · 11.7
  153. 창녕군 · 11.6
  154. 오산시 · 11.4
  155. 포항시남구 · 11.3
  156. 평창군 · 11.3
  157. 김천시 · 11.0
  158. 진천군 · 11.0
  159. 익산시 · 10.9
  160. 담양군 · 10.9
  161. 문경시 · 10.8
  162. 북구 · 10.7
  163. 증평군 · 10.6
  164. 북구 · 10.6
  165. 경주시 · 10.5
  166. 화순군 · 10.5
  167. 예산군 · 10.5
  168. 금산군 · 10.4
  169. 영도구 · 10.4
  170. 고성군 · 10.3
  171. 서구 · 10.3
  172. 양양군 · 10.3
  173. 부안군 · 10.0
  174. 거제시 · 10.0
  175. 계룡시 · 10.0
  176. 장성군 · 10.0
  177. 제천시 · 9.9
  178. 고령군 · 9.5
  179. 성주군 · 9.4
  180. 옹진군 · 9.3
  181. 산청군 · 9.2
  182. 통영시 · 9.1
  183. 홍성군 · 8.9
  184. 영주시 · 8.9
  185. 단양군 · 8.7
  186. 괴산군 · 8.6
  187. 논산시 · 8.5
  188. 상주시 · 8.4
  189. 하동군 · 8.3
  190. 고성군 · 8.3
  191. 청도군 · 8.3
  192. 보령시 · 8.1
  193. 여수시 · 8.1
  194. 고창군 · 8.0
  195. 예천군 · 7.7
  196. 동구 · 7.7
  197. 청송군 · 7.4
  198. 철원군 · 7.3
  199. 보은군 · 7.3
  200. 안동시 · 7.2
  201. 김제시 · 6.9
  202. 남해군 · 6.8
  203. 거창군 · 6.8
  204. 영월군 · 6.7
  205. 청양군 · 6.3
  206. 함양군 · 6.3
  207. 인제군 · 6.2
  208. 화천군 · 6.1
  209. 함평군 · 6.1
  210. 정읍시 · 6.1
  211. 해남군 · 6.0
  212. 영덕군 · 5.8
  213. 남원시 · 5.8
  214. 영동군 · 5.8
  215. 부여군 · 5.7
  216. 울릉군 · 5.7
  217. 삼척시 · 5.7
  218. 의성군 · 5.6
  219. 서천군 · 5.6
  220. 합천군 · 5.4
  221. 구례군 · 5.3
  222. 영암군 · 5.2
  223. 무주군 · 5.1
  224. 곡성군 · 5.1
  225. 동해시 · 5.0
  226. 봉화군 · 5.0
  227. 장수군 · 4.7
  228. 영광군 · 4.5
  229. 장흥군 · 4.4
  230. 울진군 · 4.3
  231. 강진군 · 4.1
  232. 의령군 · 4.1
  233. 정선군 · 4.0
  234. 임실군 · 4.0
  235. 진도군 · 4.0
  236. 진안군 · 3.6
  237. 고흥군 · 3.6
  238. 옥천군 · 3.2
  239. 양구군 · 2.9
  240. 보성군 · 2.9
  241. 태백시 · 2.4
  242. 신안군 · 2.4
  243. 완도군 · 2.3
  244. 영양군 · 1.9
  245. 순창군 · 1.1
MOLIT brokerage registrations 2026-08-18 ÷ MOIS registered population 2026-07-31 · positions from area-weighted centroids of the 2023 NGII district boundaries · all under 이용허락범위 제한 없음

What this map does not hide

The country is the grid
All 254 district boundaries were read — 4,506 exterior rings, 1.2 million points — and a hexagon cell counts as land when its centre falls inside one of them. That is 229 cells, plus 13 added at their own position for districts whose island is smaller than a single hexagon: 242. Then the part that matters: no district crosses water. The mask is split into connected components first — mainland, Ulleung, Ongjin, Geoje, Jeju — and a district belongs to the one nearest its centroid. A component with cells to spare drops the ones furthest from any district; one that is short grows toward the districts that want in. Jeju gave up two of its four, the mainland gained five, and 245 cells hold 245 districts with none left over. Inside each component the Hungarian algorithm on squared distance settles the rest, so it is the optimal arrangement rather than a greedy one. Nothing was placed by hand and a rerun produces the same file.
Tiles are displaced
Mean displacement is 1.81 cells, about 43 km; the worst is 5.01 cells, 137 km. All eight of the worst are Hanam, Guri, Seongnam Jungwon, Gangdong, Seongnam Bundang, Gwangju, Yangpyeong and Jungnang — the ring east of Seoul, where districts are packed tightest. That is not a failure of the fit, it is what a cartogram is. One hexagon per district gives every district the same area, so the capital region must take more of the picture than it takes of the land, and something has to move. Before districts were stopped from crossing water, Wando and Jindo sat beside Jeju: nothing was wrong with their centroids, but Jeju had more cells than districts, the surplus had to be filled, and the two nearest candidates were taken. A global optimum over the wrong feasible set is still the wrong answer.
Eleven are absent
The boundary file is 2023 and the population and brokerage files are 2026. In between, Hwaseong split into four wards, Incheon reorganised into five and Cheongju into two. No 2023 centroid exists for a district created in 2024 — Hwaseong’s Dongtan, Manse, Byeongjeom and Hyohaeng; Incheon’s Geomdan, Michuhol, Seohae, Yeongjong and Jemulpo; Cheongju’s Seowon and Cheongwon. They are named rather than invented.
There are no labels
Names do not fit on 245 hexagons. This map answers "where is the rate high", not "what is Sejong’s rate". Names and numbers appear in a popup on hover. The popup needs JavaScript; with it off, the browser’s own tooltip gives the same name and rate. For anyone who has neither, the full list in rank order is below.