라이브러리/Matplotlib

Matplotlib의 기본이해

데이터_박과장 2023. 10. 12. 19:19

 

 

Matplotlib는 파이썬의 데이터 시각화 라이브러리로 다양한 유형의 그래프를 생성할 수 있습니다. 다음은 Matplotlib를 사용하여 그릴 수 있는 7가지 주요 그래프 유형과 그래프가 어떤 데이터 시각화에 효과적인지 설명 및 예시 파이썬 코드입니다.

선 그래프 (Line Plot):

데이터 포인트 간의 연속적인 관계를 시각화하는 데 사용됩니다.
예시: 시간에 따른 주식 가격의 변화를 표시

 

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 18, 20]
plt.plot(x, y)
plt.xlabel('시간')
plt.ylabel('주식 가격')
plt.title('주식 가격 변화')
plt.show()



막대 그래프 (Bar Plot):

범주형 데이터를 비교하는 데 효과적입니다.
예시: 각 도시의 인구를 비교

 

cities = ['도시A', '도시B', '도시C']
population = [1000000, 1500000, 800000]
plt.bar(cities, population)
plt.xlabel('도시')
plt.ylabel('인구')
plt.title('도시별 인구 비교')
plt.show()



히스토그램 (Histogram):

데이터의 분포를 시각화하며 연속적인 값의 빈도를 보여줍니다.
예시: 시험 점수 분포

 

scores = [75, 80, 85, 90, 95, 100, 85, 88, 92, 78, 92]
plt.hist(scores, bins=5)
plt.xlabel('시험 점수')
plt.ylabel('빈도')
plt.title('시험 점수 분포')
plt.show()



산점도 그래프 (Scatter Plot):

두 변수 간의 관계를 나타내며 상관 관계를 확인하는 데 사용됩니다.
예시: 키와 몸무게 간의 상관 관계

 

height = [160, 165, 170, 175, 180]
weight = [60, 65, 70, 75, 80]
plt.scatter(height, weight)
plt.xlabel('키 (cm)')
plt.ylabel('몸무게 (kg)')
plt.title('키와 몸무게 관계')
plt.show()



원 그래프 (Pie Chart):

전체에서 각 범주의 상대적 비율을 표시할 때 사용됩니다.
예시: 예산 내에서 각 비용 항목의 비율

 

labels = ['식비', '주거', '교통', '의료', '여가']
expenses = [30, 25, 20, 15, 10]
plt.pie(expenses, labels=labels, autopct='%1.1f%%')
plt.title('월 예산 내 비용 비율')
plt.show()



상자 그림 (Box Plot):

데이터의 중앙값, 사분위수, 이상치 등을 시각화하여 데이터의 분포와 통계 정보를 보여줍니다.
예시: 여러 그룹의 시험 성적 비교

 

data = [75, 80, 85, 90, 95, 100, 65, 70, 72, 85]
plt.boxplot(data)
plt.ylabel('시험 성적')
plt.title('시험 성적 분포')
plt.show()



히트맵 (Heatmap):

2차원 데이터의 패턴과 관계을 시각화합니다. 주로 상관 행렬과 같은 데이터에 사용됩니다.
예시: 상관 행렬의 히트맵

 

import seaborn as sns  # Seaborn은 Matplotlib과 함께 사용됩니다.
data = sns.load_dataset('flights').pivot('month', 'year', 'passengers')
sns.heatmap(data, annot=True, fmt="d")
plt.title('월별 승객 수')
plt.show()


각 그래프 유형은 데이터의 특성에 따라 효과적으로 사용됩니다. 데이터의 종류와 목적에 따라 가장 적합한 그래프 유형을 선택할 수 있습니다.

 

 

그래프 세부조정

본 라이브러리에서 그래프 세부사항 조정 방법입니다.

 

x축의 값은 0과 6 사이, y축의 값은 0과 20 사이입니다.
'ro'의 뜻은 red랑 o모양으로 해달라는 말입니다.

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()

 

 

 

import numpy as np

# 0에서 5까지 0.2 단위로 샘플생성
t = np.arange(0., 5., 0.2)

# 빨간 대시, 파란 사각형, 녹색 삼각형
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()

 

딕셔너리 구조를 가진 그래프 예시

import matplotlib.pyplot as plt

data_dict = {'data_x': [1, 2, 3, 4, 5], 'data_y': [2, 3, 5, 10, 8]}

plt.plot('data_x', 'data_y', data=data_dict)
plt.show()

그래프 설정 정리본입니다.

# 정리
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4, 5], [2, 3, 5, 10, 17])
plt.xlim([0, 5])      # X축의 범위: [xmin, xmax]
plt.ylim([0, 20])     # Y축의 범위: [ymin, ymax]
plt.axis([0, 5, 0, 20])  # X, Y축의 범위: [xmin, xmax, ymin, ymax]
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.legend

다양한 선의 설정 방법입니다.

import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [4, 4, 4], '-', color='C0', label='Solid')
plt.plot([1, 2, 3], [3, 3, 3], '--', color='C0', label='Dashed')
plt.plot([1, 2, 3], [2, 2, 2], ':', color='C0', label='Dotted')
plt.plot([1, 2, 3], [1, 1, 1], '-.', color='C0', label='Dash-dot')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.axis([0.8, 3.2, 0.5, 5.0])
plt.legend(loc='upper right', ncol=4)
plt.show()

 

 

아래는 matplotlib 관련 사이트 입니다.

 

https://medium.com/dataseries/mastering-matplotlib-part-1-a480109171e3

 

Mastering Matplotlib: Part 1

Understanding Matplotlib Architecture…

medium.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Matplotlib 공식 홈페이지 입니다.

 

https://matplotlib.org/

 

Matplotlib — Visualization with Python

seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data visualization Cartopy Cartopy is a Python package des

matplotlib.org