이번엔 tkinter가 아닌 다른 여러 모듈을 통해
데이터를 시각화 하는 모듈을 사용한다
(파이썬 머신러닝 쪽에 해당하는 분야 이다.)
이건 추가적인 정보로 알아둔다
<소프트웨어 생명주기>
1. 요구사항
2. 설계
3. 구현
4. 테스트
5. 운영
6. 모든분야의 유지보수(1,2,3,4,5 전부)
데이터 시각화를 위한 모듈
1. matplotlib = 그래프그리기
2. NumPy = 고성능 수치계산 전용(행렬 연산)
3. SciPy = 데이터사이언스에서 사용하는 대표적인것
4. SymPy = 파이썬에서 넘파이와 유사하게 사용하는 대수 전용 모듈
1. 라이브러리 기반 = 함수기반
2. 패키지 혹은 모듈 기반 = 클래스 기반
클래스는 함수와 변수를 포함하며 둘이 하나인경우 이다.
import matplotlib.pyplot as plt
import math
import numpy
'''
x=range(100)
y=[value**2 for value in x]
plt.plot(x,y)
plt.show()
'''
'''
t=range(100)
#x=[(2*math.pi*i)/len(t) for i in t]
#x=[2*math.pi for i in t] 이건 안나온다
y=[math.sin(value) for value in x]
plt.plot(x,y)
plt.show()
'''
'''
x=numpy.linspace(0,2*numpy.pi,100)
y=[numpy.sin(value) for value in x]
#y=numpy.sin(x) 위와 같은데 보다 간편하다
plt.plot(x,y)
plt.show()
'''
'''
x=numpy.linspace(-3,2,200)
y=x**2-2*x+1
plt.plot(x,y)
plt.show()
'''
'''
x=numpy.linspace(0,2*numpy.pi,100)
ya=numpy.sin(x)
yb=numpy.cos(x)
plt.plot(x,ya)
plt.plot(x,yb)
plt.show()
'''
이런식으로 사용한다
import matplotlib.pyplot as plt
x=range(100) #기본적으로 리스트에 담긴다.
y=[value**2 for value in x] #기본적으로 리스트에 담긴다.
plt.plot(x,y)
plt.show()
를 통해 그래프를 그릴수 있다.
다른 파일에서 가져오기 있을수 있다.
파일 데이터로부터 그래프 그리는법
x,y를 리스트로 만들어준다
r= read
w= write
a= append 형식의 파일을 불러온다는 것임.
다음과 같다
x,y =[],[]
for line in open('example_data.txt','w'):
value=[float(s) for s in line.split()]
x.append(value[0])
y.append(value[1])
plt.plot(x,y)
plt.show()
example_data 라는 이름의 메모장을 만들어 놓아야 한다.
다음과같이 간단하게 줄여 적는 코드도 있다.
with open('example_data.txt','r') as f:
x,y=zip(*[[float(s) for s in line.split()]for line in f])
plt.plot(x,y)
plt.show()
다음은 넘파이와 리스트의 슬라이싱을 이용한 줄여적는 코드이다
data=numpy.loadtxt('example_data.txt')
plt.plot(data[:,0],data[:,1]) #2차원 배열에서 0열과 1열을 각각 x,y좌표에 받는다.
plt.show()
만약 텍스트파일에서 3개의 값을 받아서
그래프 3개를 그리려면 다음과 같이 하면 된다.
넘파이를 통해 불러온다.
data=numpy.loadtxt('new.txt')
plt.plot(data[:,0],data[:,0])
plt.plot(data[:,0],data[:,1])
plt.plot(data[:,0],data[:,2])
plt.show()
만약 그래프를 n개를 그려야 하는 상황이라면
다음과 같이 for문을 이용하여 줄이는 방법이 있다.
data=numpy.loadtxt('new.txt')
for column in data.T:
#print(data[:,0],column)
plt.plot(data[:,0],column)
plt.show()
의문(이걸 tkinter에 넣을수 있는가? 한결)
산점도 그리기(랜덤으로)
c=100
x=[random.random() for i in range(c)]
y=[random.random() for i in range(c)]
plt.scatter(x,y)
plt.show()
이걸 넘파이로 줄여보기.
data=numpy.random.rand(100,2)#2차원 행렬만들기
plt. scatter(data[:,0],data[:,1])
plt.show()
막대그래프 그리기
다음은 가장 기본형그래프 이다
data=[5.,25.,50.,20.] #.은 안적어도 가능함
plt.bar(range(len(data)),data)
plt.show()
여기서 너비를 늘리면 다음과 같다
data=[5.,25.,50.,20.]
plt.bar(range(len(data)),data,width=1)
plt.show()
그래프를 수평으로 눕혀본다
data=[5.,25.,50.,20.]
plt.barh(range(len(data)),data) #bar가 아니라 barh를 사용한다.
plt.show()
다중 막대 그래프 그리기
다음은 기본형 이다
data=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
x=numpy.arange(4)
plt.bar(x+0.00,data[0], color='b', width=0.25)
plt.bar(x+0.25,data[1], color='g', width=0.25)
plt.bar(x+0.50,data[2], color='r', width=0.25)
plt.show()
이걸 좀더 다르게 표현하면
plt.bar(range(4),data[0],color='b',width=0.25)
plt.bar([x+0.25 for x in range(4)],data[1],color='g',width=0.25)
plt.bar([x+0.50 for x in range(4)],data[2],color='r',width=0.25)
plt.show()
이렇게 된다.
분할 막대그래프 그리기
다음은 기본형 코드 이다
a=[5,6,7,8]
b=[9,10,11,12]
x=range(4)
plt.bar(x,a,color='b')
plt.bar(x,b,color='r' ,bottom=a) #바텀을 통해 중첩시킨다 바텀이 아래로 간다.
이번엔 3개를 중첩한다
a=numpy.array([1,2,3,4])
b=numpy.array([5,6,7,8])
c=numpy.array([9,10,11,12])
x= range(4)
plt.bar(x,a,color='b')
plt.bar(x,b,color='g', bottom=a)
plt.bar(x,c,color='r',bottom=a+b)
plt.show()
양방향 막대 그래프 그리기
w_pop=[1,2,3,4]
m_pop=[5,6,7,8]
x=range(4)
plt.barh(x,w_pop, color='r')
plt.barh(x, [-v for v in m_pop], color='b') #음수를 붙여서 반대로 해주면 끝
plt.show()
원형 그래프 그리기
data=[1,2,34,56]
plt.pie(data)
plt.show()
'관 > 핫한 파이썬 공부' 카테고리의 다른 글
파이썬의 여러 모듈 공부하기 07. (0) | 2019.11.18 |
---|---|
파이썬의 여러 모듈 공부하기 06. (0) | 2019.11.06 |
파이썬의 여러 모듈 공부하기 04. (0) | 2019.11.02 |
파이썬의 여러 모듈 공부하기 03. (0) | 2019.11.02 |
파이썬의 여러 모듈 공부하기 02. (0) | 2019.11.02 |
댓글