Matplotlib

yst3147·2022년 2월 5일
0

공부 내용

  • Matplotlib
  • 기본 plot
  • plot 요소들

Matplotlib

  • Python에서 사용할 수 있는 시각화 라이브러리
  • numpy와 scipy를 베이스로 하여 다양한 라이브러리와 호환성 좋음
  • 다양한 시각화 방법론 제공
    • 막대그래프
    • 선그래프
    • 산점도
    • ETC

Import Library

  • matplotlib는 줄여서 mpl로 코드 상에서 사용
  • 가장 많이 사용하는 pyplot 모듈도 함께 불러옴

Code

import matplotlib as mpl
import matplotlib.pyplot as plt

기본 plot

Figure와 Axes

  • matplotlib에서 그리는 시각화는 Figure라는 큰 틀에 Ax라는 서브플롯을 추가해서 만듦

Code

fig = plt.figure()
ax = fig.add_subplot()
plt.show()

  • 2개 이상 그리고 싶다면 위치 지정 필요
fig = plt.figure()
ax = fig.add_subplot(121) 
ax = fig.add_subplot(122) 
plt.show()

plt로 그래프 그리기

  • 선그래프 plot

Code

fig = plt.figure()
ax = fig.add_subplot()

# x = [1, 2, 3]
x = np.array([1, 2, 3])

plt.plot(x)
plt.show()

  • 선그래프 2개 순서대로 그리기(Pyplot API)

Code

fig = plt.figure()

x1 = [1, 2, 3]
x2 = [3, 2, 1]

ax1 = fig.add_subplot(211) 
plt.plot(x1) # ax1에 그리기
ax2 = fig.add_subplot(212) 
plt.plot(x2) # ax2에 그리기
plt.show()
  • 서브플롯 객체 ax에 선그래프 2개 그리기
    • 객체지향(Object-Oriented) API -> 그래프에서 각 객체에 대해 직접적으로 수정
    • plt로 그리다가 다시 서브플롯 객체를 받아서 사용할 수도 있음
      -> plt.gcf().get_axes() 이용

Code

fig = plt.figure()

x1 = [1, 2, 3]
x2 = [3, 2, 1]

ax1 = fig.add_subplot(211) 
ax2 = fig.add_subplot(212) 

ax1.plot(x1) 
ax2.plot(x2)
plt.show()

Plot 요소

한 subplot에서 여러 개 그리기

  • ax에 동시에 다양한 그래프를 그릴 수 있음
    -> 동시에 그래프 그리면 색상이 자동적으로 구분

Code

fig = plt.figure()
ax = fig.add_subplot(111) 
# 3개의 그래프 동시에 그리기
ax.plot([1, 1, 1]) # 파랑
ax.plot([1, 2, 3]) # 주황
ax.plot([3, 3, 3]) # 초록

plt.show()

  • 서로 다른 종류의 그래프 그리는 경우
    -> 그래프마다 색깔이 파란색부터 시작하므로 색 명시 필요

Code

fig = plt.figure()
ax = fig.add_subplot(111) 

# 선그래프와 막대그래프 동시에 그리기 (둘 다 파란색 시작, 색깔 구분되지 않음)
ax.plot([1, 2, 3], [1, 2, 3]) 
ax.bar([1, 2, 3], [1, 2, 3]) 

plt.show()

색상 지정

  • 색 직접 명시 가능
    -> color 또는 c 파라미터를 통해 색 값 전달

Code

fig = plt.figure()
ax = fig.add_subplot(111) 

# 3개의 그래프 동시에 그리기(color 또는 c 파라미터 사용)
ax.plot([1, 1, 1], color='r') # 한 글자로 정하는 색상 (원색 계열)
ax.plot([2, 2, 2], color='forestgreen') # color name (css에서 사용)
ax.plot([3, 3, 3], color='#000000') # hex code (BLACK) (가장 추천) (#R2G2B2 형태)

plt.show()

텍스트 사용

정보를 사용하기 위해 텍스트 사용 가능

Code

fig = plt.figure()
ax = fig.add_subplot(111) 
ax.plot([1, 1, 1], label='1') 
ax.plot([2, 2, 2], label='2') 
ax.plot([3, 3, 3], label='3')

ax.set_title('Basic Plot') # 제목 추가
ax.set_xticks([0, 1, 2]) # 축에 적히는 수 위치
ax.set_xticklabels(['zero', 'one', 'two']) # 축에 적히는 텍스트
ax.legend() # 범례(텍스트 정보) 추가

plt.show()

텍스트를 추가하는 방법 2가지

  • text

Code

fig = plt.figure()
ax = fig.add_subplot(111) 
ax.plot([1, 1, 1], label='1') 
ax.plot([2, 2, 2], label='2') 
ax.plot([3, 3, 3], label='3')


ax.set_title('Basic Plot')
ax.set_xticks([0, 1, 2])
ax.set_xticklabels(['zero', 'one', 'two'])

ax.text(x=1, y=2, s='This is Text') # x좌표, y좌표, 문자열 (원하는 위치에 텍스트를 적음) 
# text는 xy 좌표에서 시작(정렬 조정 가능), 제목과 tick들은 가운데 정렬

ax.legend()

plt.show()    

  • annotate
    • 화살표를 추가할 수 있다는 장점 가짐

Code

fig = plt.figure()
ax = fig.add_subplot(111) 
ax.plot([1, 1, 1], label='1') 
ax.plot([2, 2, 2], label='2') 
ax.plot([3, 3, 3], label='3')


ax.set_title('Basic Plot')
ax.set_xticks([0, 1, 2])
ax.set_xticklabels(['zero', 'one', 'two'])

ax.annotate(text='This is Annotate', 
 			xy=(1, 2), # 텍스트, 튜플 형태 좌표 (원하는 위치에 텍스트 지정, 포인트 지정)
            xytext=(1.2, 2.2), # 화살표 방향
            arrowprops=dict(facecolor='black'), # 화살표 특징
           )

ax.legend()

plt.show()

0개의 댓글