본문 바로가기
Data Analysis/Data Analysis & Image Processing

16. Matplotlib

by SeleniumBindingProtein 2022. 4. 16.
728x90
반응형
# Matplotlib 라이브러리의 기초
# 다양한 데이터를 시각화할 수 있도록 도와주는 라이브러리입니다.
# 간단한 데이터 분석에서부터 인공지능 모델의 시각화까지 활용도가 매우 높습니다.

# 간단한 직선 그래프 그리기

import matplotlib.pyplot as plt

x = [1, 2, 3]
y = [1, 2, 3]
plt.plot(x, y)
plt.title("My Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

 

# 그래프 저장하기

import matplotlib.pyplot as plt

x = [1, 2, 3]
y = [1, 2, 3]
plt.plot(x, y)
plt.title("My Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.savefig('picture.png')
import matplotlib.pyplot as plt
import numpy as np

#linespace()함수는 두 수 사이를 50개의 균일한 간격의 수를 배열로 만들어준다. 이 배열은 그래프의 Y축으로 많이 사용합니다.
x = np.linspace(0, np.pi * 10, 500) # PI * 10 너비에, 500개의 점을 균일하게 찍기
# plt.subplot() : 인수에 행의 수, 열의 수 및 몇 번째 등을 지정할 수 있음
# subplot는 subplot이전에 그려진 figure과 겹치는 경우, 이전의 figure을 지우는 성질을 가지고 있다.
fig, axes = plt.subplots(2, 1) # 2개의 그래프가 들어가는 Figure 생성
axes[0].plot(x, np.sin(x)) # 첫 번째 그래프는 사인(Sin) 그래프
axes[1].plot(x, np.cos(x)) # 두 번째 그래프는 코사인(Cos) 그래프
fig.savefig("sin&cos.png")

 

# 선 그래프 그리기

import matplotlib.pyplot as plt
import numpy as np

# np.arange(시작점(생략 시 0), 끝점(미포함), step size(생략 시 1))
# numpy 모듈의 arange 함수는 반열린구간 [start, stop) 에서 step 의 크기만큼 일정하게 떨어져 있는 숫자들을 array 형태로 반환해 주는 함수
# range 함수에는 정수 단위만 지원하나, np.arange는 실수 단위도 표현 가능
# range 메소드는 range iterator 자료형을 반환하고, np.arange 메소드는 numpy array 자료형을 반환
# np.arange 메소드 결과는 넘파이에서 수행하는 연산 연계가 가능
# for 문 등에서 순회하고 싶은 수열이 정수로 구성되어 있다면, range 메소드로 순회하는 것이 수행시간에 있어 조금 더 유리
x = np.arange(-9, 10)
y = x ** 2
# 라인 스타일로는 '-', ':', '-.', '--' 등이 사용될 수 있습니다.
plt.plot(x, y, linestyle="-.", marker="*")
# X축 및 Y축에서 특정 범위를 자를 수도 있습니다.
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
y1 = x ** 2
y2 = -x
plt.plot(x, y1, linestyle="-.", marker="*", color="red", label="y = x * x")
plt.plot(x, y2, linestyle=":", marker="o", color="blue", label="y = -x")
plt.xlabel("X")
plt.ylabel("Y")
plt.legend(
  shadow=True, # 범례 뒤에 그림자를 그려서 입체감을 표현
  borderpad=1 # 보더 패드의 크기
)
plt.show()
#선 그래프 그리기
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
y1 = x ** 2
plt.plot(
    x, y1,
    linestyle=":",
    marker="o",
    markersize=8,
    markerfacecolor="blue",
    markeredgecolor="red"
)
plt.show()
# 막대 그래프 그리기
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
plt.bar(x, x ** 2) # (x,y)
plt.show()
# 누적 막대 그래프 그리기
import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(10) # 아래 막대
y = np.random.rand(10) # 중간 막대
z = np.random.rand(10) # 위 막대
data = [x, y, z]
# range : List의 range와 같은 효과, integer로 0부터 9까지 배열 추출
x_array = np.arange(10)
for i in range(0, 3): # 누적 막대의 종류가 3개
  plt.bar(
    x_array, # 0부터 10까지의 X 위치에서
    data[i], # 각 높이(10개)만큼 쌓음
    bottom=np.sum(data[:i], axis=0)
  )
plt.show()
# 스캐터 그래프 그리기
# 산점도 (Scatter plot)는 두 변수의 상관 관계를 직교 좌표계의 평면에 점으로 표현하는 그래프
import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(10)
y = np.random.rand(10)
colors = np.random.randint(0, 100, 10)
sizes = np.pi * 1000 * np.random.rand(10)
plt.scatter(x, y, c=colors, s=sizes, alpha=0.7) # alpha 파라미터는 마커의 투명도를 지정
plt.show()
 
 
728x90
반응형

'Data Analysis > Data Analysis & Image Processing' 카테고리의 다른 글

18. 네이버 영화 리뷰 데이터 분석 1. 영화 정보 크롤링  (0) 2022.04.16
17. 웹 크롤링  (0) 2022.04.16
15. Pandas  (0) 2022.04.16
14. KNN 숫자 인식 예제  (0) 2022.04.16
13. KNN Algorithm  (0) 2022.04.16

댓글