반응형
matplotlib.pyplot의 기본적인 canvas 그리기와 스타일링 예제¶
본 튜토리얼은 matplotlib의 가장 기본적인 튜토리얼을 제공합니다.
다양한 옵션값과 스타일 기본 설정법을 배울 수 있습니다.
In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import warnings
warnings.filterwarnings('ignore')
# Unicode warning 제거 (폰트 관련 경고메시지)
plt.rcParams['axes.unicode_minus']=False
# 한글 폰트 설정
plt.rcParams['font.family'] = "NanumGothic"
# 그래프 출력 사이즈 설정
plt.rcParams["figure.figsize"] = (12, 8)
In [2]:
# 엘리스 환경에서 한글 폰트를 사용하기 위한 코드입니다.
font_dirs = ['/usr/share/fonts/truetype/nanum', ]
font_files = fm.findSystemFonts(fontpaths=font_dirs)
for font_file in font_files:
fm.fontManager.addfont(font_file)
plt.rc('font', family='NanumBarunGothic')
단일 그래프 생성¶
In [3]:
# data 생성
data = np.arange(1, 100)
# plot
plt.plot(data)
# 그래프를 보여주는 코드
plt.show()
다중 그래프 (multiple graphs)¶
1개의 canvas 안에 다중 그래프 그리기
In [4]:
data = np.arange(1, 51)
plt.plot(data)
data2 = np.arange(51, 101)
# plt.figure()
plt.plot(data2)
plt.show()
2개의 figure로 나누어서 다중 그래프 그리기
- figure()는 새로운 그래프 canvas를 생성합니다.
In [5]:
data = np.arange(100, 201)
plt.plot(data)
data2 = np.arange(200, 301)
# figure()는 새로운 그래프를 생성합니다.
plt.figure()
plt.plot(data2)
plt.show()
여러개의 plot을 그리는 방법 (subplot)¶
plt.subplot(row, column, index)
In [6]:
data = np.arange(100, 201)
plt.subplot(2, 1, 1)
plt.plot(data)
data2 = np.arange(200, 301)
plt.subplot(2, 1, 2)
plt.plot(data2)
plt.show()
위의 코드와 동일하나 , (콤마)를 제거한 상태
In [7]:
data = np.arange(100, 201)
# 콤마를 생략하고 row, column, index로 작성가능
# 211 -> row: 2, col: 1, index: 1
plt.subplot(211)
plt.plot(data)
data2 = np.arange(200, 301)
plt.subplot(212)
plt.plot(data2)
plt.show()
In [8]:
data = np.arange(100, 201)
plt.subplot(1, 3, 1)
plt.plot(data)
data2 = np.arange(200, 301)
plt.subplot(1, 3, 2)
plt.plot(data2)
data3 = np.arange(300, 401)
plt.subplot(1, 3, 3)
plt.plot(data3)
plt.show()
여러개의 plot을 그리는 방법 (subplots) - s가 더 붙습니다.¶
plt.subplots(행의 갯수, 열의 갯수)
In [9]:
data = np.arange(1, 51)
# data 생성
# 밑 그림
fig, axes = plt.subplots(2, 3)
axes[0, 0].plot(data)
axes[0, 1].plot(data * data)
axes[0, 2].plot(data ** 3)
axes[1, 0].plot(data % 10)
axes[1, 1].plot(-data)
axes[1, 2].plot(data // 20)
plt.tight_layout()
plt.show()
주요 스타일 옵션¶
In [10]:
from IPython.display import Image
# 출처: matplotlib.org
Image('https://matplotlib.org/_images/anatomy.png')
Out[10]: