У меня есть инструмент, который открывает поток для API Twitter и анализирует твиты на основе их настроений.Логика для этого хранится внутри класса.Я использую глобальные переменные для хранения значений, сгенерированных классом (все целые числа).Они постоянно обновляются по мере обработки твитов.
from tweepy.streaming import StreamListener
from textblob import TextBlob
from tweepy import Stream
from tweepy import OAuthHandler
import matplotlib.pyplot as plt
import re, json, time, datetime
import numpy as np
import tweepy
count = 0
class listener(StreamListener):
def on_data(self, data):
....(logic for processing data)....
global count
count = count + 1
Я использую matplotlib для построения агрегированных значений каждую X секунду.Для этого я:
- использую цикл while вне моего подкласса для вызова глобальных переменных
- отображаем значения в глобалах на диаграмме
- сбрасываем глобалы в ихисходное значение (0)
- повторение каждые X секунды
Мое решение для построения агрегированных данных каждую X секунду на диаграмме:
plt.ion() # for an interactive chart
read_frequency = 5 # how frequent we plot values to chart (seconds)
while True:
time.sleep(read_frequency)
now = datetime.datetime.now().isoformat()
# prints aggregated data to terminal
print(f'{now} Total: {count}')
x = now
y = count
plt.plot(x, y, color = 'black', marker = 'o')
plt.show()
plt.pause(0.0001)
# Reset aggregate data in global variables
count = 0
Проблема, с которой я столкнулсятеперь, так как я сбрасываю глобальные значения, мои ydata, между графиками нет никакой связи.Таким образом, вместо диаграммы стиля линии, я получаю диаграмму с отдельными графиками.
Мой текущий график
Как я могу навязать отношения между графиками с целью нарисовать линию между ними?