当新数据通过流转储到“twitter-out”时,为什么我的数据点会像这样显示?看起来它与动画有关,因为当我重新运行文件时没有在新数据中流式传输时,它就很好了。
style.use('ggplot')
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
def animate(self):
pullData = open("twitter-out.txt", "r").read()
lines = pullData.split('\n')
xar = []
yar = []
x = 0
y = 0
for l in lines[:]:
x += 1
if "['pos']" in l:
y += 1
elif "['neg']" in l:
y -= 1
xar.append(x)
yar.append(y)
ax1.plot(xar, yar,color='r')
ax1.set_xlabel('Number of Tweets')
ax1.set_ylabel('Sentiment')
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
答案 0 :(得分:0)
修复1:
主要解决方法非常简单:只需在致电ax1.cla()
之前添加ax1.plot()
说明:
你看到的原因是每次调用animate
函数时动画都会绘制一个新的图,并将其叠加在所有以前的函数之上。
因此,您在问题中附加的数字实际上是从animate
调用中抽取的十几个数字的叠加。
要解决此问题,您只需使用clear axes命令ax.cla()
清除轴中包含的上一个图。
修复2:
水平条完全存在的原因是因为您的dataPulled
字符串始终以新行结束,该行在列表line
的末尾变成空字符串。
看那个例子:
>>> 'a\nb\n'.split('\n')
['a', 'b', '']
所以你必须在for
循环中删除最后一个:
for l in lines[:-1]: