반응형
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter, MultipleLocator
import pandas as pd
# 남한 인구 데이터
data = {
"Age_Group": [
"0-4", "5-9", "10-14", "15-19", "20-24", "25-29", "30-34",
"35-39", "40-44", "45-49", "50-54", "55-59", "60-64",
"65-69", "70-74", "75-79", "80+"
],
"Male": [
-766227, -1097221, -1189663, -1183580, -1620461, -1933726, -1796779,
-1808706, -2067075, -2061862, -2258061, -2068112, -2042614,
-1478069, -1012668, -696606, -737256
],
"Female": [
727814, 1044863, 1122176, 1104293, 1484776, 1695058, 1593655,
1673805, 1967944, 2000130, 2231491, 2045845, 2105499,
1585781, 1152098, 899933, 1418722
]
}
# DataFrame 생성
df = pd.DataFrame(data)
# 시각화
fig, ax = plt.subplots(figsize=(10, 8))
# 남성 데이터 (왼쪽 방향)
ax.barh(df["Age_Group"], df["Male"], color="blue", label="Male")
# 여성 데이터 (오른쪽 방향)
ax.barh(df["Age_Group"], df["Female"], color="red", label="Female")
# 축 설정
ax.set_xlabel("Population")
ax.set_ylabel("Age Group")
ax.set_title("Population Pyramid of South Korea")
ax.legend()
# x축 범위 설정
max_population = max(abs(df["Male"].min()), df["Female"].max())
ax.set_xlim([-max_population * 1.1, max_population * 1.1])
# x축 숫자 포맷: 천 단위에 콤마 추가
formatter = FuncFormatter(lambda x, _: f'{int(abs(x)):,}')
ax.xaxis.set_major_formatter(formatter)
# x축 눈금 간격 50만 단위로 설정
ax.xaxis.set_major_locator(MultipleLocator(500000))
# 그래프 표시
plt.tight_layout()
plt.show()
반응형
'🖥️ IT, 컴퓨터 > 🐍 Python' 카테고리의 다른 글
[Python] 구글 지도 위에 마커 올리기 (gmplot과 Google Maps JavaScript API 이용) (0) | 2025.01.17 |
---|---|
[IT] Python과 Google Map API를 이용해 경위도 좌표를 영문 주소로 변환 (0) | 2025.01.17 |
[Python] BeautifulSoup 라이브러리란? :: html 파싱, Selenium과의 차이 (0) | 2024.11.20 |
[Python] Selenium 라이브러리란? :: 크롤링, 웹스크래핑 (0) | 2024.11.20 |
[Python] 파이썬 BeautifulSoup 뷰티풀수프로 html 파싱해 원하는 부분 표로 만들기 :: 공차 매장명, 주소 추출 (0) | 2024.11.17 |
댓글