
Matplotlib은 파이썬에서 가장 널리 사용되는 시각화 라이브러리입니다. 데이터 분석, 머신러닝, 통계 시각화 등 다양한 분야에서 기본 도구로 활용됩니다.
이번 글에서는 복잡한 외부 데이터 없이, 기본 리스트(list)와 딕셔너리(dictionary) 만을 활용하여 Matplotlib의 line plot, scatter plot, histogram을 직접 만들어 보고, 축 조정·색상·점 크기·텍스트·그리드 등 커스터마이징까지 실습 중심으로 정리합니다.
1. 예제 데이터 생성하기 (리스트 + 딕셔너리 기반)
먼저 모든 예제를 실행하기 위한 간단한 데이터를 직접 만들겠습니다.
# 연도(year)와 세계 인구(pop) 예시 데이터
year = [1990, 2000, 2010, 2020, 2030]
pop = [5.3, 6.1, 6.9, 7.8, 8.5] # 단위: Billion(십억)
# GDP per capita (국가별 1인당 GDP)
gdp_cap = [1200, 3500, 6000, 15000, 45000]
# 기대수명 (Life Expectancy)
life_exp = [55, 62, 70, 75, 82]
# 국가별 색상 (Scatter용)
col = ['red', 'green', 'blue', 'orange', 'purple']
이제 이 리스트들을 활용해 다양한 차트를 만들어 보겠습니다.
2. Line Plot 기본: 시계열 변화 시각화
import matplotlib.pyplot as plt
plt.plot(year, pop)
plt.xlabel("Year")
plt.ylabel("World Population (Billion)")
plt.title("World Population Growth")
plt.show()

연도별 인구 추이처럼 변화 흐름을 표현할 때 line plot이 적합합니다.
3. Scatter Plot 기본: GDP와 기대수명 관계
plt.scatter(gdp_cap, life_exp)
plt.xlabel("GDP per Capita (USD)")
plt.ylabel("Life Expectancy (Years)")
plt.title("GDP vs Life Expectancy")
plt.show()
산점도는 두 변수 사이의 관계를 탐색할 때 사용합니다.

4. Scatter + Log Scale 적용하기
GDP 데이터는 눈금 차이가 크므로 로그 스케일이 효과적입니다.
plt.scatter(gdp_cap, life_exp)
plt.xscale("log")
plt.xlabel("GDP per Capita (log scale)")
plt.ylabel("Life Expectancy")
plt.title("GDP vs Life Expectancy (Log Scale)")
plt.show()

5. 히스토그램(Histogram): 기대수명 분포 확인
plt.hist(life_exp, bins=5)
plt.xlabel("Life Expectancy")
plt.ylabel("Frequency")
plt.title("Life Expectancy Distribution")
plt.show()
항목 히스토그램 (Histogram) vs 막대그래프 (Bar Chart)
| 데이터 유형 | 연속형 | 범주형 |
| 막대 의미 | 값의 구간(bin) | 개별 카테고리 |
| 순서 | 고정됨 | 자유롭게 변경 가능 |
| 사용 예 | 키, 나이, 시간 | 국가명, 제품명, 직군 |
6. Scatter 크기(s) 값으로 인구 반영하기
점 크기를 pop 값으로 조절하여 더 많은 정보를 담을 수 있습니다.
import numpy as np
np_pop = np.array(pop) * 50 # 크기 확대를 위해 스케일링
plt.scatter(gdp_cap, life_exp, s=np_pop)
plt.xscale("log")
plt.xlabel("GDP per Capita")
plt.ylabel("Life Expectancy")
plt.title("GDP vs Life Expectancy (Sized by Population)")
plt.show()

7. 색상(c), 투명도(alpha), 커스터마이징
plt.scatter(
x=gdp_cap,
y=life_exp,
s=np_pop,
c=col,
alpha=0.8
)
plt.xscale("log")
plt.xlabel("GDP per Capita")
plt.ylabel("Life Expectancy")
plt.title("GDP vs Life Expectancy (Color + Alpha)")
plt.show()

8. 텍스트 표시(text) + 그리드(grid)
국가명을 리스트로 추가하고 표시해 보겠습니다.
countries = ["Country A", "Country B", "Country C", "Country D", "Country E"]
plt.scatter(
x=gdp_cap,
y=life_exp,
s=np_pop,
c=col,
alpha=0.8
)
# 국가명 텍스트 표시
for i in range(len(countries)):
plt.text(gdp_cap[i], life_exp[i] + 0.5, countries[i])
plt.xscale("log")
plt.xlabel("GDP per Capita")
plt.ylabel("Life Expectancy")
plt.title("World Data Visualization")
plt.grid(True)
plt.show()

텍스트와 그리드를 활용하면 실무 보고용 그래프 품질이 크게 향상됩니다.
본 글에서는 별도의 외부 데이터 없이 기본 리스트와 딕셔너리만으로 Matplotlib을 완전히 학습할 수 있도록 line plot, scatter plot, histogram을 모두 실습했습니다. 또한 로그 스케일, 점 크기 조절, 색상·투명도·텍스트·그리드 커스터마이징까지 시각화의 핵심 요소를 모두 다뤘습니다.
Matplotlib을 이해하면 Pandas·Seaborn·Plotly 같은 시각화 도구도 자연스럽게 확장할 수 있으며, 머신러닝 프로젝트의 데이터 탐색(EDA) 능력도 크게 강화됩니다.
'Programming' 카테고리의 다른 글
| SQL 기초 완전 정리: SELECT부터 WHERE, DISTINCT, LIKE, NULL, 집계함수까지 (0) | 2025.12.08 |
|---|---|
| 파이썬 가상환경(Mac & Windows) 설정 완전 가이드 (0) | 2025.12.08 |
| NumPy 완전 정리: ndarray 생성부터 reshape, axis, 벡터와 행렬 연산까지 한 번에 배우기 (0) | 2025.12.08 |
| 파이썬 판다스(Pandas) 완전 정리: DataFrame 생성부터 인덱싱·정렬·그룹화·결측치 처리까지 한 번에 배우기 (0) | 2025.12.08 |
| 파이썬 논리연산자 AND·OR·NOT 완전 정리 + NumPy 논리 연산 활용법 (1) | 2025.12.08 |