使用fig,在循环matplotlib中的轴

时间:2017-11-14 02:02:51

标签: python matplotlib plot

我有一个关于在matplotlib的循环中使用fig,axes函数的问题。 我试图在循环中创建一些包含多个子图(子图的数量不固定)的图,如下所示:

def start_plot(self):
    if self.running:
        run_fig, run_ax = plt.subplots(*self.matrix)
    if self.histogram:
        hist_fig, hist_ax = plt.subplots(*self.matrix)

def create_signal_plots(self, iwindow, window_name):
    if self.running:
        run_ax[iwindow+1].plot(running_perf, label=window_name) # throws error run_ax not recognized
    if self.histogram:
        hist_ax[iwindow+1].hist(timeseries, label=window_name) 

plot = plot_class(run =1, hist =1, matrix = get_matrix(*args)) # e.g. matrix = (3,2)

for istrat, strat in enumerate(strats):
    plot.start_plot()
    for iwindow, window in enumerate(windows):
        plot.create_plots(iwindow, window)

有没有办法让这项工作无需在功能中返回轴并传递它?如果我使用plt.figure而不是fix,axes,那么我可以使用plt.figure(fig_no)简单地更新任何数字。

1 个答案:

答案 0 :(得分:0)

您可以将run_figrun_ax存储在对象中作为实例属性,然后从该对象的任何其他方法访问它们。这可以使用self完成。

self.run_figstart_plot中使用create_signal_plots等,如下所示:

def start_plot(self):
    if self.running:
        self.run_fig, self.run_ax = plt.subplots(*self.matrix)
    if self.histogram:
        self.hist_fig, self.hist_ax = plt.subplots(*self.matrix)

def create_signal_plots(self, iwindow, window_name):
    if self.running:
        self.run_ax[iwindow+1].plot(running_perf, label=window_name) # throws error run_ax not recognized
    if self.histogram:
        self.hist_ax[iwindow+1].hist(timeseries, label=window_name)