Python 公开matplotlib直方图更新方法的简单方法
我知道关于更新while循环中的绘图的几个相关问题,但它们并没有完全解决我的问题 我想公开一个尽可能简单的方法,当新数据可用时,我可以调用它来更新绘图。具体的上下文是,我希望参数的直方图在模型的训练循环中经过一定次数的迭代后更新 当我说尽可能简单时——因为我很少更新情节,我完全可以简单地关闭并重新绘制一个新的情节。不幸的是,我无法让它工作——因为训练循环运行了许多单独的图形窗口,在循环终止之前,没有一个窗口显示任何内容 我尝试的第一件事是为绘图创建一个具有更新方法的类,如下所示:Python 公开matplotlib直方图更新方法的简单方法,python,matplotlib,Python,Matplotlib,我知道关于更新while循环中的绘图的几个相关问题,但它们并没有完全解决我的问题 我想公开一个尽可能简单的方法,当新数据可用时,我可以调用它来更新绘图。具体的上下文是,我希望参数的直方图在模型的训练循环中经过一定次数的迭代后更新 当我说尽可能简单时——因为我很少更新情节,我完全可以简单地关闭并重新绘制一个新的情节。不幸的是,我无法让它工作——因为训练循环运行了许多单独的图形窗口,在循环终止之前,没有一个窗口显示任何内容 我尝试的第一件事是为绘图创建一个具有更新方法的类,如下所示: class P
class ParamPlot(object):
def __init__(self, model):
self.model = model
# model.param_classes is a list different sets of parameters
n_param_classes = len(model.param_classes)
self.fig, self.ax_arr = plt.subplots(nrows=n_param_classes)
def update(self):
plt.clf()
for params, axis in zip(model.param_classes, self.ax_arr):
# assume that params is an array
axis.hist(params, bins=250, normed=True)
self.fig.canvas.draw()
但这导致大量图形窗口生成,在循环终止之前,没有一个窗口显示任何内容
我如何才能做到这一点?以下是我如何让它工作的 请注意,
clear
在每个轴上都被调用
它不快,但很简单,而且很有效。以下是我如何让它工作的 请注意,
clear
在每个轴上都被调用
这不是很快,但很简单,而且很有效。你看过这个关于“谢谢你”的问题了吗?你看过这个关于“谢谢你”的问题了吗!
class ParamPlot(object):
def __init__(self, model):
self.model = model
# model.param_classes is a list different sets of parameters
n_param_classes = len(model.param_classes)
self.fig, self.ax_arr = plt.subplots(nrows=n_param_classes)
def update(self):
for axis in np.ravel(self.ax_arr):
axis.clear()
for params, axis in zip(model.param_classes, self.ax_arr):
# assume that params is an array
axis.hist(params, bins=250, normed=True)
plt.draw()