【发布时间】:2014-03-13 20:19:03
【问题描述】:
我有一些代码可以在 matplotlib 中为散点图设置动画,一切运行顺利,除了最后我得到了两个输出图。一个包含所需的动画,而另一个是空白的。
虽然这可能是一个简单的问题,但我不明白为什么,也不知道为什么我会得到两张图表。谁能看到是什么给了我“虚假”的空图? 干杯。
import math, numpy, time, matplotlib, pyvisa
from pyvisa import visa
from matplotlib import pyplot, animation
import os.path
class Realtime_measurement_and_scatter_plot:
def __init__(......):
self.animaiton = animation.FuncAnimation(self.figure, self.take_new_data_and_update_graph, init_func=self.initialise_graph, frames = self.number_of_measurements, interval=100, blit=False)
def initialise_graph(self):
self.figure = matplotlib.pyplot.figure()
self.axes = matplotlib.pyplot.axes()
self.axes.set_title("Realtime Plot")
self.x_data = []
self.y_data = []
self.scatterplot = matplotlib.pyplot.scatter(self.x_data, self.y_data)
return self.scatterplot,
def take_new_data_and_update_graph(self, i):
...
averaged_voltage = numpy.average(measured_voltages )
new_time = float(i) * float( self.time_between_measurements )
self.x_data = numpy.append( self.x_data, averaged_voltage )
self.y_data = numpy.append( self.y_data , new_time )
self.scatterplot = matplotlib.pyplot.scatter(self.x_data, self.y_data)
return self.scatterplot,
animation_instance = Realtime_measurement_and_scatter_plot(1000000, 1 , 1, 6, "Super_FUN_TEST.0",22)
matplotlib.pyplot.show()
【问题讨论】:
-
请减少这里的代码量。虽然很多人愿意提供帮助,但很少有人愿意涉足这么多与实际问题无关的代码。请只发布演示您的问题所需的最少数量的代码。
-
谢谢,现在代码被删减了!
-
它应该仍然是功能性的。这看起来很糟糕,因为
__init__使用了您直到initialize_graph才创建的属性。代码还是太多了(比如你可以把take_new_data_and_update_graph里的几乎所有东西都拿出来。 -
啊,好吧,我明白你说它看起来坏了是什么意思。更改此设置以便 init 创建图形,轴等而不是在 intialize_graph 中创建它们,从而消除了两个输出图形问题。感谢您的解决方案!
标签: python animation matplotlib scatter-plot