728x90
    
    
    
  
<목차>
1. 기본 구조
2. csv 파일 읽어들여 만들기
1. 기본 구조
사용한 라이브러리
random -> 무작위의 수를 생성하기 위해 사용합니다.
intertools.count -> 1,2,3... 순차적인 수를 생성하기 위해 사용합니다.
pandas
matplotlib.pyplot
matplotlib.animation -> animation 효과, 실시간 데이터 반영을 위해 사용합니다.
사용한 메서드
index = count()
next(index) -> 순차적인 수를 생성해냅니다.
random.randint(0,5) -> 0~5 사이의 랜덤한 정수를 생성합니다.
plt.cla() -> 앞선 그래프를 삭제합니다.
ani = FuncAnimation(plt.gcf(), animate, interval = 1000)
-> plt.gcf() --> 현재 그래프 모양을 가져옵니다.
-> animate -> 애니메이션 효과를 적용합니다.
->interval = 1000 -> 1000 밀리초 마다 적용합니다.
[코드]
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
 | 
 import random 
from itertools import count 
import pandas as pd 
import matplotlib.pyplot as plt 
from matplotlib.animation import FuncAnimation 
plt.style.use('fivethirtyeight') 
x_val = [] 
y_val = [] 
index = count() 
def animate(i): 
    x_val.append(next(index)) 
    y_val.append(random.randint(0,5)) 
    plt.cla() 
    plt.plot(x_val, y_val) 
ani = FuncAnimation(plt.gcf(), animate, interval = 1000) 
plt.tight_layout() 
plt.show() 
 | 
cs | 
[실행결과]

2. csv_file을 읽어들여 만들기
(1) 실시간으로 데이터를 생성하는 csv
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
 | 
 import csv 
import random 
import time 
x_value = 0 
total_1 = 1000 
total_2 = 1000 
fieldnames = ["x_value","total_1","total_2"] 
with open('C:/Users/opers/python/data4.csv','w') as csv_file: 
    csv_writer = csv.DictWriter(csv_file, fieldnames = fieldnames) 
    csv_writer.writeheader() 
while True: 
    with open('C:/Users/opers/python/data4.csv','a') as csv_file: 
        csv_writer = csv.DictWriter(csv_file,fieldnames=fieldnames) 
        info = { 
            "x_value":x_value, 
            "total_1":total_1, 
            "total_2":total_2 
        } 
        csv_writer.writerow(info) 
        print(x_value,total_1,total_2) 
        x_value += 1 
        total_1 = total_1+random.randint(-4,8) 
        total_2 = total_2+random.randint(-5,8) 
    time.sleep(1) 
 | 
cs | 
(2) 실시간 그래프 그리기 코드
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
 | 
 import random 
from itertools import count 
import pandas as pd 
import matplotlib.pyplot as plt 
from matplotlib.animation import FuncAnimation 
from pandas.core.indexes import interval 
def animate(i): 
    data =pd.read_csv('data4.csv') 
    x = data['x_value'] 
    y1 = data['total_1'] 
    y2 = data['total_2'] 
    plt.cla() 
    plt.plot(x,y1, label='블로그') 
    plt.plot(x,y2,label='유튜브') 
    plt.legend(loc = 'upper left') 
    plt.tight_layout() 
ani = FuncAnimation(plt.gcf(),animate, interval = 1000) 
plt.tight_layout() 
plt.show() 
 | 
cs | 
[실행결과]

728x90
    
    
    
  '데이터분석 > Python matplotlib' 카테고리의 다른 글
| <Matplotlib> 산점도 그리기 (0) | 2021.08.28 | 
|---|---|
| <Matplotlib> 선 그래프 사이를 채워서 차이 나타내기 (0) | 2021.08.24 | 
| <Python Matplotlib> Stack Plot 누적 그래프 그리기 (0) | 2021.08.20 | 
| <Python matplotlib> Pie chart 만들기 (0) | 2021.08.17 | 
| <Python matplotlib> matplotlib 한글 폰트 깨짐 수정[진짜 되는 수정] 따라만 하세요 (0) | 2021.08.16 |