Я бы хотел, чтобы мой вывод из моего StdOutListener отображался в реальном времени.Проблема в том, что сам поток твиттера представляет собой цикл, который нельзя завершить несколько раз подряд для обновления графика, поэтому мне нужно как-то остановить функцию matplotlib.я попробовал это с plt.show(block=False)
.
я попробовал это с plt.show(block=False)
, но это приводит к открытию нескольких окон matplotlib.Я попытался остановить и запустить цикл matplotlib, но это, похоже, не имеет никакого эффекта.В настоящее время я выполняю свой класс live_Graph после каждого входящего твита, потому что, похоже, это единственная возможность соединить два цикла.
class StdOutListener(StreamListener):
def on_data(self,data):
try:
all_data = json.loads(data)
text=all_data["text"]
temp_text=TextBlob(text)
analysis=temp_text.sentiment.polarity
output = open("twitter-out.txt","a")
output.write(str(analysis))
output.write("\n")
output.close()
print("sucsess")
live_graph=LiveGraph()
plt=live_graph.analyze_data()
return True
except BaseException as e:
print('Failed: ', str(e))
class LiveGraph():
def animate(i):
graph_data=open("twitter-out.txt", "r").read()
lines=graph_data.split("\n")
xar=[]
yar=[]
x=0
y=0
for l in lines:
print(l)
x+=1
try:
y=float(l)
print(y)
except BaseException as e:
pass
xar.append(x)
yar.append(y)
#xs = graph_data.index.tolist()
#ys = graph_data["Sentiment"].tolist()
ax1.clear()
ax1.plot(xar, yar)
ani = animation.FuncAnimation(fig, animate, interval=3000)
plt.show()
В результате я бы хотел, чтобы график обновлялся самв том же файле, откуда он получает твиты.Моя проблема в том, что я все еще новичок в python, и разветвление, похоже, не выходило из-за его сложной природы.