[참조]
Matplotlib은 그래프를 그리는 패키지이다.
Matplotlib에서 기본 해상도를 확인하는 방법:
import matplotlib as mpl
print(mpl.rcParams['figure.dpi'])
ans) 72.0
spyder와 prompt에서 matplotlib의 dpi가 각각 72와 100으로 다르다.
따라서, 자체 셋팅을 하여 사용하는 spyder에서 dpi를 100으로 변경해 줄 필요가 있다.
import matplotlib.pyplot as plt
plt.rc('figure', dpi=100)
plt.rc('font', size=12)
plt.rc('lines', linewidth=2)
또는
import matplotlib as mpl
mpl.rcParams['figure.dpi'] = 300
mpl.rcParams['font.size'] = 12
mpl.rcParams['lines.linewidth'] = 2
Spyder 내에서 설정:
Ex)
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,1,50)
y1 = np.cos(4*np.pi*x)
y2 = np.cos(4*np.pi*x)*np.exp(-2*x)
plt.plot(x,y1) # 2D 선그래프
plt.plot(x,y2)
plt.show() # 화면 표시. Jupyter나 IPython에서는 자동 표시
(Note: plt.show()는 matlab의 "hold off"와도 같은 기능을 한다.Ex-계속) r(raw) 문자열 vs 일반 문자열
plt.plot(x,y1,'r-*', # 'r-*': red, solid line
label=r'$sin(4 \pi x)$',lw=1) # legend label과 line width
# r을 붙여 만든 raw문자열은 escape 문자(\t, \n 등)가 적용되지 않는다.
plt.plot(x,y2,'b--o',
label=r'$ e^{-2x} sin(4\pi x) $',lw=1)
plt.title(r'$sin(4 \pi x)$ vs. $ e^{-2x} sin(4\pi x)$') # title
plt.xlabel('x') # x축 label
plt.ylabel('y') # y축 label
plt.text(0.5,-1.0,r'This is sample') # (x,y) 위치에 text를 출력
plt.axis([0,1,-1.5,1.5]) # axis의 범위
plt.grid(True)
plt.legend(loc='upper left') # legend location
plt.tight_layout() # 여백 조정
plt.show() # 화면 표시
Ex-계속) subplot()
plt.subplot(2,1,1)
plt.plot(x,y1,'r-*',lw=1)
plt.grid(True)
plt.ylabel(r'$sin(4 \pi x)$')
plt.axis([0,1,-1.5,1.5])
plt.subplot(2,1,2)
plt.plot(x,y2,'b--o',lw=1)
plt.grid(True)
plt.xlabel('x')
plt.ylabel(r'$ e^{-2x} sin(4\pi x) $')
plt.axis([0,1,-1.5,1.5])
plt.tight_layout()
plt.show()
Markers
'.' # point marker
',' # pixel marker
'o' # circle marker
'v' # triangle_down marker
'^' # triangle_up marker
'<' # triangle_left marker
'>' # triangle_right marker
'1' # tri_down marker
'2' # tri_up marker
'3' # tri_left marker
'4' # tri_right marker
'8' # octagon marker
's' # square marker
'p' # pentagon marker
'P' # plus (filled) marker
'*' # star marker
'h' # hexagon1 marker
'H' # hexagon2 marker
'+' # plus marker
'x' # x marker
'X' # x (filled) marker
'D' # diamond marker
'd' # thin_diamond marker
'|' # vline marker
'_' # hline marker
Line Styles
'-' # solid line style
'--' # dashed line style
'-.' # dash-dot line style
':' # dotted line style
Colors
'b' # blue
'g' # green
'r' # red
'c' # cyan
'm' # magenta
'y' # yellow
'k' # black
'w' # white
Example format strings:
'b' # blue markers with default shape
'or' # red circles
'-g' # green solid line
'--' # dashed line with default color
'^k:' # black triangle_up markers connected by a dotted line
plot()
subplot() # 개별 subplot 지정 및 생성
subplots() # 여러 subplot 한 번에 생성
title()
xlabel()
ylabel()
axis()
xlim()
ylim()
tight_layout()
grid()
grid(True, which='both')
legend()
show()
figure()
text()
xscale(...) # xscale("log")이면 로그스케일
yscale(...)
minorticks_on()
minorticks_off()
IPython(Interactive Python) 콘솔에서 interactive(대화형)하게 그래프를 그릴 수 있다.
"%matplotlib"이라는 magic command와 "matplotlib.pyplot.ion()", "matplotlib.pyplot.ioff()"를 통해 제어한다.
Ex) 그림을 셀 안에 고정 출력 (기본값)
%matplotlib inline
# plt.plot() 같은 명령이 있을 때마다 콘솔 내에 출력
# plt.show() 를 호출하지 않아도 됨
Ex) 그림을 셀 안에 인터랙티브하게 출력 (줌/이동 가능)
%matplotlib notebook
# plt.plot() 같은 명령이 있을 때마다 콘솔 내에 출력
# plt.show() 를 호출하지 않아도 됨
Ex) 별도 창으로 출력
%matplotlib qt5
matplotlib.pyplot.ion()
# plt.plot() 등을 호출하면 바로 그래프가 업데이트
# plt.show()를 호출할 필요가 없음
Ex) 별도 창으로 출력
%matplotlib qt5
matplotlib.pyplot.ioff()
# plt.plot() 등을 호출후 plt.show()를 호출해야 그래프가 업데이트