matplotlib 기초¶
- 상당히 방대함
- matplotlib 그래프 기본 형태
- plt.figure(figsize=(10, 6))
- plt.plot(x, y)
- plt.show
In [14]:
import matplotlib.pyplot as plt # pyplot: 2D 그래프를 담당, 맷플로립에서 그래프를 그리는 모듈
In [15]:
%matplotlib inline
# 그래프의 결과를 출력 세션에 나타나게 하는 설정, 주피터 노트북에 포함시켜서 사용
# %matplotlib inline에서 inline뒤에 띄어쓰기만 해도 오류뜸
#%matplotlib.inline # 오타, UsageError: Line magic function `%matplotlib.inline` not found.
In [21]:
from matplotlib import rc # 맷플로립 한글 깨짐 방지를 위한 폰트 설정 모듈
rc("font", family=" Malgun Gothic") # Windows 유저: 맑은 고딕(말군 고딕)
#rc("font", family="Arial Unicode MS") # 맥유저
get_ipython().run_line_magic("matplotlib", "inline")
In [22]:
# figure로 열어서 show로 닫는다.
plt.figure(figsize=(10, 6)) # figsize : 전체 그림의 크기 사이즈
#plt.plot([1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]) #[]1개만 넣어주면 y값에 대응, x값은 자동생성
plt.plot([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 1, 2, 3, 4, 2, 3, 5, -1, 3]) #plot: 그림을 그려라
plt.show()
삼각함수 그리기¶
- np.arange(a, b, s): a부터 b까지 s의 간격
- np.sin(value)
In [32]:
import numpy as np
t = np.arange(0, 12, 0.01) # 0부터 12까지 0.01의 간격으로 , 넘파이 어레이 배열로 총 1,200개의 값을 가진 배열
y = np.sin(t) #이 한줄만 실행해도 y도 1,200개가됨
In [33]:
plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t))
plt.plot(t, np.cos(t))
plt.show()
- 격자무늬 추가
- 그래프 제목 추가
- x축, y축 제목 추가
- 주황색, 파란색 선 데이터 의미 구분
In [34]:
def drawGraph():
plt.figure(figsize=(10, 6))
plt.plot(t, np.sin(t), lw=3, label="sin") #np.sin(t): 1200개, label= : 그린 그래프에 대한 명칭 지정, lw=3: 선굵기 지정
plt.plot(t, np.cos(t), , label="cos") #np.cos(t): 1200개, 'r': 코사인 그래프 컬러지정
plt.grid(True) # 격자
plt.legend(loc=2) # 범례, loc: 레전드의 위치조정
plt.title("Example of sinewave") # 제목
plt.xlabel("time") # x축 라벨: 시간
plt.ylabel("Amplitude") #y축 라벨: 진폭
plt.show()
Input In [34] plt.plot(t, np.cos(t), , label="cos") #np.cos(t): 1200개, 'r': 코사인 그래프 컬러지정 ^ SyntaxError: invalid syntax
In [35]:
drawGraph()
# sin함수(파란색) : 0과 파이일 때 0, 파이/2일 때 1
# cos함수(빨간색) : 0일 때 1, 파이일 때 -1, 파이/2일 때 0
그래프 커스텀¶
In [36]:
t = np.arange(0, 5, 0.5) #0부터 5까지(), 0.5간격으로, 5포함안함
#t = np.arange(0, 5) # 5포함 안함, array([0, 1, 2, 3, 4])
t
Out[36]:
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
In [12]:
plt.figure(figsize=(10, 6))
plt.plot(t, t, "r--") # red ---- 빨간색 점선
plt.plot(t, t ** 2, "bs") #bs : blue square, 파란네모■
plt.plot(t, t ** 3, "g>") #g> : green으로 옆으로 뾰족한 화살표(▶옆세모)를 그려라.
#plt.plot(t, t ** 3, "g^") #g^ : green으로 위로 뾰족한 화살표(▲세모)를 그려라.
plt.show()
In [152]:
# t = [0, 1, 2, 3, 4, 5, 6]
t = list(range(0, 7))
y = [1, 4, 5, 8, 9, 5, 3]
In [180]:
# 다양한 스타일을 지정할 수 있다.
def drawGraph():
plt.figure(figsize=(10, 6))
plt.plot(
t,
y,
color="red", #"green"
linestyle="--", #"dashed" 동일
marker="o",
markerfacecolor="blue",
markersize=10, #12가능
)
plt.xlim([-0.5, 6.5]) # x축 범위지정
plt.ylim([0.5, 9.5]) # y축 범위지정
plt.show()
drawGraph()
scatter plot¶
In [49]:
t = np.array(range(0, 10))
#t = np.array(range(0, 10, 5)) #ValueError: x and y must be the same size
y = np.array([9, 8, 7, 9, 8, 3, 2, 4, 3, 4])
In [50]:
def drawGraph():
plt.figure(figsize=(10, 6))
plt.scatter(t, y)
plt.show()
drawGraph()
In [42]:
colormap = t # t = np.array(range(0, 10)), t에 컬러맵을 적용
# colormap을 적용할 수 있다
def drawGraph():
plt.figure(figsize=(10, 6))
plt.scatter(t, y, s=150, c=colormap, marker="<") # s=150: 점의크기, 50넣어보기
# c=colormap : x에 해당하는 값이 컬러맵에 따라 다르게 들어감 (컬러바로 확인)
# 왼쪽으로 뾰족한 화살표 # 반대: ">"
plt.colorbar() #컬러바
plt.show()
drawGraph()
In [52]:
# 넘파이 랜덤함수로 데이터 3개 만들기
s1 = np.random.normal(loc=0, scale=1, size=1000) #loc=: 평균값 지정, sale=: 표준편차 지정
s2 = np.random.normal(loc=5, scale=0.5, size=1000)
s3 = np.random.normal(loc=10, scale=2, size=1000)
In [53]:
plt.figure(figsize=(10,6))
plt.plot(s1, label='s1')
plt.plot(s2, label='s2')
plt.plot(s3, label='s3')
plt.legend()
plt.show()
In [55]:
plt.figure(figsize=(10,6))
plt.boxplot((s1, s2, s3))
plt.grid()
plt.show()
Pandas에서 plot 그리기¶
- matplotlib 을 가져와서 사용합니다
In [197]:
data_result["인구수"].plot(kind="bar", figsize=(10, 10));
In [196]:
data_result["인구수"].plot(kind="barh", figsize=(10, 10));
In [56]:
from matplotlib.colors import ListedColormap # ListedColormap: colormap 을 사용자 정의(user define)로 세팅
color_step = ["#e74c3c", "#2ecc71", "#95a9a6", "#2ecc71", "#3498db", "#3498db"]
my_cmap = ListedColormap(color_step)