import matplotlib.pyplot as plt
%matplotlib inline
#그래프 데이터
subject = ['English', 'Math', 'Korean', 'Science', 'Computer']
points = [40, 90, 50, 60, 100]
# 축 그리기
fig = plt.figure(figsize=(5,2))
# 도화지(그래프) 객체 생성
# figsize로 인자 값을 주어 그래프 크기를 바꿀 수 있음
ax1 = fig.add_subplot(1,1,1)
#figure()객체에 add_subplot 메서드를 이용해 축을 그려준다.
# 그래프 그리기
ax1.bar(subject,points)
bar(x,y)
: 인자에서 정의한 데이터들을 x, y 순으로 넣어 준다.
# 라벨, 타이틀 달기
plt.xlabel('Subject')
plt.ylabel('Points')
plt.title("Jake's Test Result")
from datetime import datetime
import pandas as pd
import os
# 그래프 데이터
csv_path = os.getenv("HOME") + "/aiffel/data_visualization/data/AMZN.csv"
data = pd.read_csv(csv_path ,index_col=0, parse_dates=True)
price = data['Close']
# 축 그리기 및 좌표축 설정
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
price.plot(ax=ax, style='black')
plt.ylim([1600,2200])
plt.xlim(['2019-05-01','2020-03-01'])
# 주석달기
important_data = [(datetime(2019, 6, 3), "Low Price"),(datetime(2020, 2, 19), "Peak Price")]
for d, label in important_data:
ax.annotate(label, xy=(d, price.asof(d)+10), # 주석을 달 좌표(x,y)
xytext=(d,price.asof(d)+100), # 주석 텍스트가 위차할 좌표(x,y)
arrowprops=dict(facecolor='red')) # 화살표 추가 및 색 설정
# 그리드, 타이틀 달기
plt.grid()
ax.set_title('StockPrice')
# 보여주기
plt.show()
Pandas Series의 활용
Pandas의 Series는 선 그래프를 그리기에 최적의 자료구조를 갖추고 있다. 위 예시에서는 price = data['close']
가 Series이다.
주석
그래프 내에 글자, 화살표 등의 주석을 넣을 때는 annotate()
메서드를 이용한다.
그리드
grid()
메서드를 이용하면 그리드(격자눈금)을 추가할 수 있다.
plt.plot()
명령으로 그래프를 그리면 matplotlib은 가장 최근의 figure 객체와 그 서브플롯을 그린다.import numpy as np
x = np.linspace(0, 10, 100) #0에서 10까지 균등한 간격으로 100개의 숫자를 만들라는 뜻입니다.
plt.plot(x, np.sin(x),'o')
plt.plot(x, np.cos(x),'--', color='black')
plt.show()
서브플롯도 plt.subplot()
을 이용해 추가할 수 있다.
x = np.linspace(0, 10, 100)
plt.subplot(2,1,1)
plt.plot(x, np.sin(x),'orange','o')
plt.subplot(2,1,2)
plt.plot(x, np.cos(x), 'orange')
plt.show()
x = np.linspace(0, 10, 100)
plt.plot(x, x + 0, linestyle='solid')
plt.plot(x, x + 1, linestyle='dashed')
plt.plot(x, x + 2, linestyle='dashdot')
plt.plot(x, x + 3, linestyle='dotted')
plt.plot(x, x + 0, '-g') # solid green
plt.plot(x, x + 1, '--c') # dashed cyan
plt.plot(x, x + 2, '-.k') # dashdot black
plt.plot(x, x + 3, ':r'); # dotted red
plt.plot(x, x + 4, linestyle='-') # solid
plt.plot(x, x + 5, linestyle='--') # dashed
plt.plot(x, x + 6, linestyle='-.') # dashdot
plt.plot(x, x + 7, linestyle=':'); # dotted
plot()
메서드를 통해 여러 가지 그래프를 그릴 수 있다.fig, axes = plt.subplots(2, 1)
data = pd.Series(np.random.rand(5), index=list('abcde'))
data.plot(kind='bar', ax=axes[0], color='blue', alpha=0.1)
data.plot(kind='barh', ax=axes[1], color='red', alpha=0.3)
그래프를 그리는 과정 정리
각 그래프 요소별 명칭