티스토리 뷰
- 복잡한 자료를 숫자나 텍스트보다는 그래프나 차트로 데이터를 시각화하여 이해하고 분석하는 것이 효과적
- 데이터를 시각화하는데 편리한 라이브러리
pip install matplotlib
간단한 그래프
from matplotlib import pyplot as plt
x = [1,2,3]
y = [1,2,3]
plt.plot(x, y, marker="o")
plt.title('myplot')
plt.xlabel("X")
plt.ylabel("Y")
plt.legend(['test'])
plt.show()

[Matplotlib] 강수량 그래프 만들기
from matplotlib import pyplot as pyp
import csv
from matplotlib import font_manager,rc
infile = open('/content/weather_input.csv', 'r')
data = csv.reader(infile)
x = []
y = []
for line in data:
x.append(line[0])
y.append(float(line[2]))
plt.plot(x, y, marker='o')
plt.title("rain")
plt.xlabel("month")
plt.ylabel("rain(mm)")
plt.show( )
infile.close( )

연습
MyGrowHeight = [130, 140, 150, 165, 175, 176]
plt.plot(MyGrowHeight)
plt.show()

제목, 레이블, 두개이상의 값 범주 설정
from matplotlib import pyplot as pyp
sqr = [10**2, 11**2, 12**2, 13**2]
Mylove = [90, 105, 130, 180]
plt.plot(sqr, linewidth=10)
plt.plot(Mylove, linewidth=5)
plt.title('10 to 13 squar')
plt.xlabel('order')
plt.ylabel('squares Num', fontsize=15)
plt.legend(['SQR','MyLoveNumber'])
plt.show()

분포도
분포도란 : 선이 아닌 점으로 그래프를 표시하는 방법
(x,y) 좌표의 자료 필요
import matplotlib.pyplot as plt
numX = [1,2,3,4,5,6,7,8,9,10]
numY = range(10, 0, -1)
plt.scatter(numX, numY, s=50, c='red') #s는 크기, c는 color
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

막대그래프 - plt.bar
import matplotlib.pyplot as plt
y = [100, 120, 130, 140, 80, 150]
x = range(len(y))
plt.bar(x, y, width=0.5, color="green") #너비, 컬러
plt.savefig('bar.jpg')
plt.show()

그래프 저장
from PIL import Image
img = Image.open('/content/bar.jpg')
print(img.size)
img

누적 막대 그래프
- bar에서 매개변수 bottom을 사용하여 이전 값을 더해 주는 형태로 만들어간다.
import matplotlib.pyplot as plt
import numpy as np
x= [1,2,3,4]
a = np.array([10,15,20,25])
b = np.array([50, 55, 60, 65])
c = np.array([100, 105, 110, 115])
plt.bar(x, a, color='pink')
plt.bar(x, b, color="green", bottom=a)
plt.bar(x, c, color='red', bottom=a+b) #배열간의 a + b를 사용하기 위해 numpy 사용
plt.show()

원그래프 - pie
import matplotlib.pyplot as plt
ratio = [25, 25, 25, 25]
plt.pie(ratio)
plt.show()

넘파이와 맷플로립을 통한 시각화
- 정규분포는 평균과 표준편차가 주어져 있을 때 엔트로피를 최대화하는 분포이다.
- 히스토그램(histogram)은 표로 되어 있는 도수 분포를 정보 그림으로 나타낸 것이다. 더 간단하게 말하면, 도수분포표를 그래프로 나타낸 것이다. 보통 히스토그램에서는 가로축이 계급, 세로축이 도수를 뜻하는데, 때때로 반대로 그리기도 한다.
- 히스토그램은 그래프사이테 틈이 없음
import numpy as np
import matplotlib.pyplot as plt
a = np.random.randn(100)
plt.hist(a, bins=30) #무작위 30개를 뽑았으나, 평균 0에 수렴
plt.show()

import numpy as np
import matplotlib.pyplot as plt
a = np.random.normal(10, 3, 500) #평균 10, 표준편차3
plt.hist(a, bins=30, color="pink")
plt.show

곡선그래프의 색 지정
- fill_between(x, form, end, color...)
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1, 100, 10)
y = np.sin(2*x)
plt.plot(x, y+1, color="pink", linewidth=1)
plt.fill_between(x, 1, y+1, color='pink')
plt.show()

이차함수그래프
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(-2, 8) #arange(start, end, step)
y = -x**2 + 5*x +1
plt.plot(x, y, marker="o", linestyle='--', color='r')
plt.grid() #그래프에 눈금선이 들어감
plt.show()

728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
반응형