def plot_init_dist(self): ''' This function will plot the distribution of variable calls prior to running the simulation. This will enable users to see whether the distributions are as they expected. ''' self.get_distributions() fig_list =[] for var, values in self.simulation_dist.items(): fig = Figure(figsize = (3,3), facecolor=[240/255,240/255,237/255], tight_layout=True) a = fig.add_subplot(111) num_bins = 15 a.hist(values, num_bins, facecolor='blue', edgecolor='black', alpha=1.0) a.set_title(var) fig_list.append(fig) if self.univar_row_num != 0: row_num = 17 else: row_num = 10 frame_canvas = Frame(self.current_tab) frame_canvas.grid(row=row_num, column=1, columnspan = 3,pady=(5, 0)) frame_canvas.grid_rowconfigure(0, weight=1) frame_canvas.grid_columnconfigure(0, weight=1) frame_canvas.config(height = '10c', width='16c') main_canvas = Canvas(frame_canvas) main_canvas.grid(row=0, column=0, sticky="news") main_canvas.config(height = '10c', width='16c') vsb = Scrollbar(frame_canvas, orient="vertical", command=main_canvas.yview) vsb.grid(row=0, column=2,sticky = 'ns') main_canvas.configure(yscrollcommand=vsb.set) figure_frame = Frame(main_canvas) main_canvas.create_window((0, 0), window=figure_frame, anchor='nw') figure_frame.config(height = '10c', width='16c') row_num = 0 column = False for figs in fig_list: figure_canvas = FigureCanvasTkAgg(figs, master=figure_frame) if column: col = 4 else: col = 1 figure_canvas.get_tk_widget().grid( row=row_num, column=col,columnspan=2, rowspan = 5, pady = 5,padx = 8, sticky=E) if column: row_num += 5 column = not column figure_frame.update_idletasks() frame_canvas.config(width='16c', height='10c') main_canvas.config(scrollregion=figure_frame.bbox("all"))
def plot_univ_on_GUI(self): if not self.current_simulation: return if len(self.current_simulation.results) == self.last_results_plotted: return self.last_results_plotted = len(self.current_simulation.results) current_var = self.current_simulation.vars_to_change[0] if self.current_simulation.results: results = concat(self.current_simulation.results).sort_index() results = results[[d is not None for d in results['MFSP']]] # filter to make sure you aren't plotting None results else: results = DataFrame(columns=self.output_columns) fig_list =[] var_fig = Figure(figsize = (3,3), facecolor=[240/255,240/255,237/255], tight_layout=True) a = var_fig.add_subplot(111) num_bins = 15 _, bins, _ = a.hist(self.simulation_dist[current_var], num_bins, facecolor='white',edgecolor='black', alpha=1.0) a.hist(results[current_var], bins=bins, facecolor='blue',edgecolor='black', alpha=1.0) a.set_title(current_var) fig_list.append(var_fig) mfsp_fig = Figure(figsize = (3,3), facecolor=[240/255,240/255,237/255], tight_layout=True) b = mfsp_fig.add_subplot(111) b.hist(results['MFSP'], num_bins, facecolor='blue', edgecolor='black', alpha=1.0) b.set_title('MFSP - ' + current_var) fig_list.append(mfsp_fig) figs_to_plot = self.finished_figures[:] + fig_list if len(self.current_simulation.results) == self.current_simulation.tot_sim: self.finished_figures += fig_list if self.univar_row_num != 0: row_num = 17 else: row_num = 10 frame_canvas = Frame(self.current_tab) frame_canvas.grid(row=row_num, column=1, columnspan = 3,pady=(5, 0)) frame_canvas.grid_rowconfigure(0, weight=1) frame_canvas.grid_columnconfigure(0, weight=1) frame_canvas.config(height = '10c', width='16c') main_canvas = Canvas(frame_canvas) main_canvas.grid(row=0, column=0, sticky="news") main_canvas.config(height = '10c', width='16c') vsb = Scrollbar(frame_canvas, orient="vertical", command=main_canvas.yview) vsb.grid(row=0, column=1,sticky = 'ns') main_canvas.configure(yscrollcommand=vsb.set) figure_frame = Frame(main_canvas) main_canvas.create_window((0, 0), window=figure_frame, anchor='nw') figure_frame.config(height = '10c', width='16c') row_num = 0 column = False for figs in figs_to_plot: figure_canvas = FigureCanvasTkAgg(figs, master=figure_frame) if column: col = 4 else: col = 1 #figure_canvas.draw() figure_canvas.get_tk_widget().grid( row=row_num, column=col,columnspan=2, rowspan = 5, pady = 5,padx = 8, sticky=E) #figure_canvas._tkcanvas.grid(row=row_num, column = 0,columnspan = 10, rowspan = 10, sticky= W+E+N+S, pady = 5,padx = 5) if column: row_num += 5 column = not column figure_frame.update_idletasks() frame_canvas.config(width='16c', height='10c') # Set the canvas scrolling region main_canvas.config(scrollregion=figure_frame.bbox("all"))