Python Matplotlib-如何使实时图表的计时器工作
代码的框架粘贴在下面。当我在计时器上更新时,图形的大小不可调整,并且Ctrl+C在运行python脚本的终端中不起作用。我认为问题是一个无限循环:Python Matplotlib-如何使实时图表的计时器工作,python,graph,matplotlib,charts,plot,Python,Graph,Matplotlib,Charts,Plot,代码的框架粘贴在下面。当我在计时器上更新时,图形的大小不可调整,并且Ctrl+C在运行python脚本的终端中不起作用。我认为问题是一个无限循环: on_fig_update_event() -> redraw() ->gen_data() ->on_fig_update_event() 但我既不知道如何打破这个循环,也不确定这是一个问题。 请查看下面的代码,如果您有任何想法,请告诉我: class MyLiveChart(object): def __init__(sel
on_fig_update_event() -> redraw() ->gen_data() ->on_fig_update_event()
但我既不知道如何打破这个循环,也不确定这是一个问题。
请查看下面的代码,如果您有任何想法,请告诉我:
class MyLiveChart(object):
def __init__(self, my_params):
# Other stuff involving my_params
plt.connect('button_press_event', self.on_fig_update_event)
plt.connect('motion_notify_event', self.on_fig_update_event)
plt.connect('key_press_event', self.on_fig_update_event)
plt.connect('key_press_event', self.read_input_from_console)
plt.connect('key_release_event', self.read_input_from_console)
plt.connect('button_press_event', self.read_input_from_console)
plt.connect('motion_notify_event', self.read_input_from_console)
self.run()
def on_fig_update_event(self, _):
self.redraw()
def redraw(self):
plt.clf()
self.gen_data()
plt.draw()
def run(self):
self.figure = plt.figure(figsize=(16, 8))
self.gen_data()
# Other stuff
plt.show()
def gen_data(self):
# Other stuff
fig = plt.subplot2grid((num_cols, num_rows), (col, row), rowspan=rowspan,
colspan=colspan)
timer = fig.figure.canvas.new_timer(interval=10000, callbacks=[(self.on_fig_update_event, [None], {})])
timer.start()
# Other stuff
plt.grid()
plt.tight_layout()
尝试使用
plt.connect(…,self.read\u input\u from\u console)
禁用线路,然后查看ctrl-c
是否有效。您可能需要添加处理sigint
大小调整问题如何?很难说,因为您的代码在运行时没有任何作用。你能提供一个你的代码的工作示例吗?如果你想要一个动画图表,为什么不看看,然后调整animate
函数来做你想做的。在这里使用OO界面也会更安全。