✔ Python

[Python] 도표 중첩

  • -
주제:  도표 중첩하여 표출
작성: 2023-01-27
활용데이터: KOSIS ➡️ 인구 ➡️ 1. 연령 및 성별인구 - 시군구 (자료갱신일 :2017-08-31)

안녕하세요, WSCODE 루카스입니다.
오늘은 데이터를 시각화는 방법으로 자주 사용되면서 가장 익숙한 방법, 도표 그리기입니다.

데이터시각화 - 도표
데이터 시각화 - 도표 중첩

1. 소스 코드

전체 소스코드부터 보도록 하겠습니다. 

# IMPORT RELEVANT LIBRARY AND PACKAGES
import pandas as pd
import matplotlib.pyplot as plt

# THE SOLUTION FOR KOREAN COMPATIBILITY
plt.rcParams['font.family'] ='AppleGothic'
plt.rcParams['axes.unicode_minus'] = False

# READ DATA
data = pd.read_excel('./Data/연령_및_성별_인구__시군구_20230125151305.xlsx', 
					header =2, usecols = "B:E")

# DATA PRE_PORCESSING 
df = data[:22]
df.columns = ["연령", "합계","남성","여성"]
df1 = df.astype({"남성": 'float'})

# SETTING THE GRAPH PROPERTIES
ymin = df1["합계"].min()
ymax = df1["합계"].max()*1.10
plt.xticks(rotation = 45)
plt.ylim(ymin, ymax)
plt.margins(x=0, y=0)
plt.axis('off')

# PRESENT DATA AS A GRAPH
plt.fill_between(df1['연령'], ymin, df1['합계'], alpha=0.5, color = "#F7DE43")
plt.fill_between(df1['연령'], ymin, df1['남성'], alpha=0.5, color = "#655BF5")
plt.fill_between(df1['연령'], ymin, df1['여성'], alpha=0.5, color = "#4BEB96")

 

2.  코드 이해

2.1. 데이터 다운로드 및 파일 읽기

우선, 그래프를 그려볼 데이터가 없으니까, KOSIS에서 통계데이터를 다운받습니다(역시 제가 원하는 데이터 형태는 아니군요...ㅎ).

  • 데이터 위치 : KOSIS ➡️ 인구 ➡️ 1. 연령 및 성별인구 - 시군구 (자료갱신일 :2017-08-31)
  • 데이터 링크 : https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1IN1603&conn_path=I2
import pandas as pd

data = pd.read_excel('./Data/연령_및_성별_인구__시군구_20230125151305.xlsx',
                     header =2,
                     usecols = "B:E")
data.head()

연령 및 성벼 인구 - 시군구 데이터

2.2. 데이터 추출

필자는 2016년의 전체 대한민국의 인원 중 남성과 여성의 비교하고자합니다.
그렇기때문에 다운받은 데이터에서 23행 이후의 데이터는 필자에게는 필요가 없습니다. 그리고 해당 column명을 임의로 변경합니다.

df = data[:22]
df.columns = ["연령", "합계","남성","여성"]
df.info()
  • .info()  : 데이터의 특성을 손쉽게 표출

df.info()

필자는 합계, 남성 및 여성을 그래프로 표출하려고하는데, 남성 Column은 데이터타입(Dtype)이 object로 설정되어있습니다
이런 경우에는 데이터타입을 실수(float)형으로 변경해야 그래프를 그릴 수 있습니다.
df1 = df.astype({"남성": 'float'})
df1.info()

df1.info()

plt.xticks(rotation = 45)
plt.plot(df1["연령"], df1['남성'])
plt.fill_between(df1['연령'], ymin, df1['합계'], alpha=0.5, color="#F7DE43")
plt.fill_between(df1['연령'], ymin, df1['남성'], alpha=0.5, color ="#655BF5")
plt.fill_between(df1['연령'], ymin, df1['여성'], alpha=0.5, color ="#4BEB96")
한글폰트 깨지는 경우, 다음와 같이 폰트속성을 적용하시면 됩니다.
plt.rcParams['font.family'] ='AppleGothic'
plt.rcParams['axes.unicode_minus'] = False

한글폰트 깨지는 경우, plt.rcParams 적용 전, 후


Reference

  1. 차트 내부 채우는 방법
    1. https://financedata.github.io/posts/faq_matplotlib_fill_chart.html
    2. https://wikidocs.net/92086
  2. 색상 휠 : https://color.adobe.com/ko/create/color-wheel 

 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.