BE/Python

[Python] 데이터 시각화 - Matplotlib 그래프 그리기

콩다영 2023. 11. 17.
728x90

[ Matplotlib 사용하여 그래프 그리기 ] 

 

머신러닝에서 모델을 구현하는 것도 중요하지만, 학습할 데이터를 선별하고 만들어진 모델을 검증하기 위해서는

데이터를 이해하는 것이 필수적이고 이를 위해서는 데이터를 시각화해서 보는 것이 매우 중요하다고 한다.

 

Python에서 가장 널리 사용되는 데이터 시각화 라이브러리 Matplotlib로 데이터 시각화를 해보았다 !

 

 

 

Matplotlib ?

   : Python 프로그래밍 언어 및 수학적 확장 Numpy 라이브러리를 활용한 플로팅 라이브러리

   : 그래프, 차트, 플롯 등 다양한 시각화 요소를 생성하고 데이터를 시각적으로 나타낼 수 있다.

%matplotlib inline     # Jupyter Notebook 사용시 추가해줘야 됨.
import matplotlib      # Googlo Colab 사용시 추가해줘야됨.

import pandas as pd

 

 

 

 

◇ 기본 그래프 그리기 (선 그래프)

   : 수치적 변화를 알아볼 때 적합한 그래프. Data의 값이 숫자가 아닐 때는 오류가 발생하니 주의할 것 !

import matplotlib.pyplot as plt 
import numpy as np

# 그래프 데이터 세팅.
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
sales_2019 = [100,120,140,110,130,150,160,170,180,200,190,210]
sales_2020 = [90,110,130,120,140,160,170,160,150,180,200,190]

# 그래프 생성
x = np.arange(12)
plt.plot(sales_2019, label='2019')
plt.plot(sales_2020, label='2020')
plt.legend(loc='best')             # 범례 표시 [best : 겹침이 최소화 되는 최적의 위치]
plt.xticks(x, months)              # x축 눈금 표시

# 타이틀 레이블 설정.
plt.title('Monthly Sales Comparion (2019-2020)')
plt.xlabel('Month')
plt.ylabel('Sales')

plt.show()

▼ 그래프 출력 결과

선 그래프

 

☞ 범례 표시방법

    plt.legend(loc=(), ncol=열의 개수, fontsize, frameon, shadow)

  • loc=(0, 0) : 왼쪽 아래
  • loc=(1, 1) : 오른쪽 위
  • loc=‘best’ : 겹침이 최소화되는 최적의 위치
  • loc=‘lower right’ : 오른쪽 아래
  • 등등 ...

※  다양한 범례 표시 방법 아래 사이트 참고.

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

 

matplotlib.pyplot.legend — Matplotlib 3.8.1 documentation

Place a legend on the Axes. The call signatures correspond to the following different ways to use this method: 1. Automatic detection of elements to be shown in the legend The elements to be added to the legend are automatically determined, when you do not

matplotlib.org

 

 

 

◇ 막대그래프 그리기

import matplotlib.pyplot as plt 
import numpy as np

x = np.arange(5)

categories = ['Category 1','Category 2','Category 3','Category 4','Category 5']
data = [20, 35, 15, 27, 45]

# 그래프 생성
plt.bar(x, data, color=['b'], width=0.6) 
plt.xticks(x, categories, rotation=45)      # rotation : 기울기 설정
plt.ylim(0,50)                              # y축 범위 설정

# 그래프 레이블 범례 설정
plt.xlabel('Categories', loc='center') 
plt.ylabel('Values', loc='center') 
plt.title('Bar Chat',loc='center', pad=20) 
plt.grid(True, axis = 'both')               # 그리드 눈금 설정. axis='x'or'y'or'both'

plt.show()

▼ 그래프 출력 결과

막대 그래프.

 

 

◇ 파이차트 그리기 

import matplotlib.pyplot as plt 
import numpy as np

# 데이터 생성
labels = ['Apple', 'Banana', 'Mango', 'Blueberry']
ratio = [15, 30, 45, 10]
explode = [0, 0.1, 0, 0]  # Banana 부분에서만 강조하기 위해

# 파이 차트 생성
# autopct : 소수점 자리, explode : 부채꼴이 파이 차트의 중심에서 벗어나는 정도
plt.pie(ratio, labels=labels, autopct='%.1f%%', explode=explode, colors=['blue','orange','green', 'red'], startangle=90, shadow=True) 
plt.show()

▼ 그래프 출력 결과

파이 그래프.

 

 

◇ sin, cos 그래프 그리기 

import matplotlib.pyplot as plt 
import numpy as np

x = np.linspace(0, 10, 100)

# sin cos 함수의 값을 계산.
y_sin = np.sin(x)
y_cos = np.cos(x)

# 그래프 그리기
plt.plot(x, y_sin, color='b', label='sin(x)')
plt.plot(x, y_cos, color='r', label='cos(x)')

# 그래프에 레이블과 범례 추가
plt.xlabel('X', loc='center') 
plt.ylabel('Y', loc='center') 
plt.title('Sine and Cosine Functions',loc='center', pad=10) 
plt.grid(True, axis = 'both') 
plt.legend()

# 그래프 보여주기
plt.show()

 

▼ 그래프 출력 결과

sin cos 함수 그래프.

728x90
반응형

댓글