我有一个关于在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)简单地更新任何数字。
答案 0 :(得分:0)
您可以将run_fig
和run_ax
存储在对象中作为实例属性,然后从该对象的任何其他方法访问它们。这可以使用self
完成。
在self.run_fig
和start_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)