본문 바로가기
Python 과 머신러닝/II. 데이터처리 문법

[Python 머신러닝] 2장. 차트 시각화 - (1)matplot

by JoyfulS 2019. 10. 17.

 

1. matplot 이용해서 차트 그리기

"""
차트 그리기
 1. 기본 차트 그리기
 2. 산점도 그리기
 3. subplot 이용 차트 그리기

 4. 차트 크기 지정 

 5. ggplot 이용 차트 그리기(multi plots)
"""


# 차트 생성 
import matplotlib.pyplot as plt  


# 한글 지원하는 라이브러리 추가
from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)


# 차트 축 <- 음수 부호 지원
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False

 

# 차트 데이터 생성 
import numpy as np 

 

# plt.plot(data)   # 차트
# plt.show()       # 보이기

help(plt.plot)
'''
plot(x, y)        # plot x and y using default line style and color
plot(x, y, 'bo')  # plot x and y using blue circle markers        -> 'bo' :  'b' - blue,  'o' - circle markers
plot(y)           # plot y using x as index array 0..N-1
plot(y, 'r+')     # ditto, but with red plusses        -> 'r+' :  'r' - red,  '+' - plus marker
'''

 

# 1. 기본 차트 그리기

 

# 차트에 사용할 데이터 생성

data = np.arange(10)  # range(n)과 동일
data

plt.plot(data)  # plot(y), x 값 생략시 자동으로 x : index
plt.show()

# Spyder를 이용중이기 때문에 show 생략 가능
# Spyder의 경우 show를 사용하지 않아도 그래프 그려지지만 파이참, 이클립스 등에선 show까지 입력해야함


plt.plot(data, 'r+')  # red 색깔의 '+' 기호로 그래프 그려짐


# 2. 산점도 그리기

data2 = np.random.randn(10) # 난수 10개

 

# 먼저 기본 그래프, 그 이후는 산점도
plt.plot(data, data2) # plot(x, y) 

plt.plot(data, data2, 'ro') # red 색깔의 둥근 점으로 표시됨

plt.plot(data, data2, 'b^') # blue 색깔의 세모 점으로 표시됨


# 단색 산점도
plt.scatter(x=data, y=data2, c='r', marker='o')

# 여러가지 색상의 산점도
cdata = np.random.randint(1,4, 10)  # 난수 정수 10개 (1~3 사이)
cdata
plt.scatter(x=data, y=data2, c=cdata, marker='o') # 3가지 색상

 

# 3. subplot 이용

# - 여러 차트를 한 화면을 분할해서 동시에 비교하면서 볼 수 있게 출력
fig = plt.figure()
x1 = fig.add_subplot(2,2,1) # 2행 2열의 1번째 셀 -> 이름 x1
x2 = fig.add_subplot(2,2,2)
x3 = fig.add_subplot(2,2,3)
x4 = fig.add_subplot(2,2,4) # 2행 2열의 4번째 셀 -> 이름 x4

# data 생성
data3 = np.random.randint(1,100, 100)
data4 = np.random.randint(10,110, 100)
cdata = np.random.randint(1,4, 100)

# 첫번째 영역 : histogram
x1.hist(data3)

# 두번째 영역 : 산점도
x2.scatter(data3, data4, c=cdata)

# 세번째 영역 : line
x3.plot(data3)

# 네번째 영역 : 색상, 선 스타일
x4.plot(data3, 'g--')

 

## subplot 시작부분(fig ~ )부터 네번째 영역 지정부분(x4.plot ~ )까지 블럭으로 실행

 

# 4. 차트 크기 지정

help(plt.figure)
fig2 = plt.figure(figsize= (12, 5))  # (w, h) (가로, 세로)
chart = fig2.add_subplot(1,1,1)

data1 = np.random.randn(50)
data2 = np.random.randn(50).cumsum()  # cumsum() : Cumulative Sum 누적합
data1
data2

chart.plot(data1, color='r', label='step', drawstyle='steps-post')  # 계단형 그래프
chart.plot(data2, color='b', label='line')  # 선 그래프
# chart라는 같은 차트 공간에 두 데이터를 집어 넣음 -> 같이 나타남

# 차트 구성요소 추가
plt.title("계단형과 선 그래프") # 제목
plt.xlabel("index") # x축 이름
plt.ylabel("random number") # y축 이름
plt.legend(loc='best') # 범례

## 시작부분(fig2 ~ )부터 차트 구성요소까지 블럭으로 실행

# 5. ggplot 이용 차트 그리기(multi plots)

'''
 - marker, color, line style, label 이용
'''

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('ggplot') # 차트 격자 제공

# data 생성
data1 = np.random.randn(100) * 0.1
data2 = np.random.randn(100) * 0.2
data3 = np.random.randn(100) * 0.25

# 차트 생성
fig = plt.figure(figsize = (12, 5))
chart = fig.add_subplot(1,1,1)

chart.plot(data1, marker='o', color='blue', linestyle='-', label='Blue Solid')
chart.plot(data2, marker='*', color='green', linestyle='--', label='Green Dashed')
chart.plot(data3, marker='+', color='orange', linestyle='-.', label='Orange Dash Dot')

# 차트 구성요소 추가
chart.set_title('Line plots : marker, color and linestyle')
plt.xlabel("index")
plt.ylabel("randum number")
plt.legend(loc = 'best') # 범례는 상단에

 


------------------------------------------------------ example ------------------------------------------------------

exam01.py
0.00MB
iris.csv
0.00MB

댓글