У меня проблема с подключением твиттер-стримера к графику matplotlib - PullRequest
0 голосов
/ 13 мая 2019

Я бы хотел, чтобы мой вывод из моего 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, и разветвление, похоже, не выходило из-за его сложной природы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...