본문 바로가기

Programing Language/Python

[plot] geopandas: geo.json plotting with matplotlib

반응형

Introduction

geoplot을 하기 위해선 우선 geo 관련 json파일이 필요한데, 이는 구글링을 통해 어렵지 않게 받을수 있다.
받은 뒤에, plotting을 하기 위해선 여러 툴이 있다.

Features

-folium을 이용하면 json없이 바로 png나 html로 플로팅을 할 수 있는데 matplotlib와 호환이 잘 되지 않기 때문에, 마음대로 custom하기가 어려움

  • 이를 위해 geopandas를 사용하면 매우 쉽게 됨
  • geopandas는 데이터를 DataFrame 형태로 불러오게 됨
  • 각 row별로 plotting할 수 있고, color custom도 matplotlib와 함께 만지기 쉬움

Installation

# in jupyter notebook
!pip install geopandas

Usage

import pandas as pd
import numpy as np
import geopandas as gpd
import matplotlib.pyplot as plt

# data import
df_places = gpd.read_file('./OPENAPI/Data/skorea-provinces-2018-geo.json') # change json file location

# example plotting
df_places.plot() # plot all rows
df_places['geometry'][0] # plot specific row(s)
df_places.plot(column='code', cmap='afmhot') # the column 'code' is values for colormap

# example plotting2
# plt.figure(figsize=(24,6))
df_places.plot()
# figsize는 안통하고, dpi는 먹히고, 가로세로 비율은 알아서 정해짐. bbox_inches는 넣는게 쓸데없는 여백 사라짐
plt.scatter([128, 130],[36, 36], s=[50, 100]
#             , c='r'
            , color="None", edgecolor='r')
plt.legend()
plt.savefig('./Output/temp.png', format='png'
            , dpi=320
            , bbox_inches='tight'
           )
반응형