我在将Twitter流媒体连接到matplotlib实时图形时遇到问题

时间:2019-05-13 08:44:33

标签: python matplotlib twitter tweepy

我希望实时显示来自StdOutListener的输出。问题是,twitter流本身是一个循环,无法连续终止以更新图形,因此我必须以某种方式停止matplotlib函数。我尝试过plt.show(block=False)

我用plt.show(block=False)进行了尝试,但这导致多个matplotlib窗口打开。我尝试停止并启动matplotlib loob,但这似乎没有任何效果。 当前,我在每次传入推文之后执行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还是很陌生,由于它的复杂性,分叉似乎不是一个选择。

0 个答案:

没有答案