Jupyter Notebook 유저의 경우 matplotlib의 결과가 out session에 나타나는 것이 유리하므로, %matplotlib inline 옵션을 사용한다.
matplotlib.pyplot : 2D 그래프
import matplotlib.pyplot as plt
# Jupyter Notebook 사용시# plt.show()를 하지 않아도 자동으로 생성되도록 만든다.# %matplotlib inline # 위의 보다는 %matplotlib inline 아래 내용으로 사용할 것을 권고한다.
get_ipyhon().run_line_magic('matplotlib', 'inline')
Basic Attributes
[ parameters ] alpha = 투명도 kind = 그래프 종류 'line', 'bar', 'barh', 'kde' logy = Y축에 대해 Log scaling use_index = 객체의 색인을 눈금 이름으로 사용할지 여부 rot = 눈금 이름 돌리기 (rotating) 0 ~ 360 xticks, yticks = x, y축으로 사용할 값 xlim, ylim = X, Y축의 한계 grid = 축의 그리드를 표현할지 여부
[ functions ] subplots = 각 column에 독립된 subplot 그리기 sharex, sharey = (subplots=True) 이면 같은 X,Y축을 공유하고 눈금과 한계를 연결 figsize = 생성될 그래프의 크기를 tuple로 지정 title = 그래프의 제목 지정 legend = subplot의 범례 지정 sort_columns = column을 알파벳 순서로 그린다.
import matplotlib.pyplot as plt
plt.figure()
plt.plot(np.random.randn(50).cumsum(), 'k--')
# cumsum은 random하게 생성된 값들의 누적# randn은 정규화된 난수 발생으로 즉, 정규화된 난수를 누적그래프로 만들었다. # k는 검은색을 뜻하며, --를 붙여서 점선으로 만든다.
plt.show()
-- 출력 --
import matplotlib.pyplot as plt
data = np.random.randn(30).cumsum()
plt.figure()
#그래프 겹쳐서 그리기
plt.plot(data, 'k--', label='Default')
plt.plot(data, 'k-', drawstyle='steps-post', label='steps-post')
plt.legend(loc='best')
plt.show()
-- 출력 --
import matplotlib.pyplot as plt
import numpy as np
# 삼각함수 그래프 그리기
t = np.arange(0, 12, 0.01)
y = np.sin(t)
def drawGraph():
plt.figure(figsize=(10, 6))
plt.plot(t, y, label='sin')
plt.plot(t, np.cos(t), label='cos')
plt.grid(True)
plt.legend() #범례표시, plot 함수의 label 옵션에 있는 값을 표시
plt.xlabel('time')
plt.ylabel('Amplitude') #진폭
plt.title('Example od sinewave')
plt.show()
drawGraph()
-- 출력 --
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0, 5, 0.5)
def drawGraph():
plt.figure(figsize=(10, 6))
plt.plot(t, t, 'r--')
plt.plot(t, t ** 2, 'bs') #blue square
plt.plot(t, t ** 3, 'g^')
plt.show()
drawGraph()
-- 출력 --
import matplotlib.pyplot as plt
t = list(range(0, 7))
y = [1, 4, 5, 8, 9, 5, 3]
plt.figure()
plt.plot(t, y,
color='red',
linestyle='-',
marker='o',
markerfacecolor='blue',
markersize=10
)
plt.xlim([-0.5, 6.5])
plt.ylim([0.5, 9.5])
plt.show()
import matplotlib.pyplot as plt
plt.figure()
# 서브플랏 간의 간격을 주지 않은 그래프를 생성하는 코드
fig , axes = plt.subplots(2,2, sharex=True, sharey=True)
for i in range(2):
for j in range(2):
axes[i,j].hist(np.random.randn(500), bins=50, color='k', alpha = 0.5)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()