Programming

Matplotlib 완전 정리: 기본 리스트/딕셔너리로 배우는 Line Plot · Scatter Plot · Histogram

Lucas.Kim 2025. 12. 8. 10:50
반응형

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) 능력도 크게 강화됩니다.

반응형