[Python] 그래프 그리기

전주은·2023년 2월 22일
0
post-thumbnail

1. matplotlib

  • 파이썬 기반 시각화 라이브러리
  • 파이썬 표준 시각화 도구라고 불릴만큼 다양한 기능을 제공
  • 한글에 대한 지원이 완벽하지 않음
  • 세부기능이 많아 사용성이 복잡함
  • pandas와 연동이 용이함
    *matplotlib

시작하기

  • 설치 및 임포트
!pip install matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
  • 폰트
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
plt.rc('font', family="NanumBarunGothic")

그래프 그리지

  • 1개
data = np.arange(1,100)
# plt.plot(data, data)
plt.plot(data)
plt.show()

  • 2개
data1 = np.arange(1,50)
plt.plot(data1)
data2= np.arange(50,100)
plt.plot(data2)
plt.show()

여러개의 plot을 그리는 방법

  • subplot(row, column, no)
# 2행 1열
data1 = np.arange(100,200)
plt.subplot(2, 1, 1)
plt.plot(data1)

data2 = np.arange(200,300)
plt.subplot(2, 1, 2)
plt.plot(data2)

plt.show()

# 1행 3열 그래프
data1 = np.arange(0,100)
plt.subplot(1,3,1) # ,생략가능(131)
plt.plot(data1)

data2 = np.arange(0,100)
plt.subplot(1,3,2)
plt.plot(data2)

data3 = np.arange(0,100)
plt.subplot(1,3,3)
plt.plot(data3)

스타일 옵션

plt.figure(figsize=(6,8)) # inch
plt.plot([1,2,3,],[1,2,3])
plt.plot([1,2,3,],[2,4,6])
plt.title('타이틀 테스트', fontsize=30)
plt.xlabel('x축',fontsize=15)
plt.ylabel('y축',fontsize=15, rotation = 0)

plt.show()

plt.figure(figsize=(15,10))
plt.title('마커 설정', fontsize=30)
plt.plot(np.arange(10), np.arange(10), marker='o', color='b', linestyle='')
plt.plot(np.arange(10), np.arange(10)*2, marker='v', color='r', linestyle='--')
plt.plot(np.arange(10), np.arange(10)*3, marker='*', color='y', linestyle='-.',alpha=0.6) # alpha 투명도

# 범례 설정
plt.legend(['10','10*2','10*3'], fontsize=15, loc='lower right', ncol=3)
# x축 or y축 범위 설정 가능
plt.xlim(0, 12)
plt.ylim(0,30)
# 서로 x축 범례끼리 겹치지 않게 회전 가능 
plt.xticks(rotation=30)
plt.yticks(rotation=90)
#그리드 설정
plt.grid()
plt.grid()
plt.show()

막대그래프

x = ['Math', 'Programming', 'Data Science', 'Art', 'English', 'Korean']
y = [60, 80, 50,90, 20, 70]

plt .figure(figsize=(8,5))
plt.bar(x, y, align='center', alpha=0.7, color='red') #align='edge도 있음

plt.title('subjects', fontsize=20)
plt.ylabel('score of Students')

plt.show()

profile
더 멀리 보도록 해요. 진주는 하루아침에 생겨나지 않습니다.

0개의 댓글