def setup_graph(self, an): container = HPlotContainer() sg = StackedGraph() sg.plotcontainer.spacing = 5 sg.plotcontainer.stack_order = 'top_to_bottom' isos = an.sorted_values(reverse=False) for i, iso in enumerate(isos): sniff = iso.sniff sg.new_plot(ytitle=iso.name, xtitle='Time (s)', title='Equilibration') if sniff.xs.shape[0]: sg.new_series(sniff.offset_xs, sniff.ys, marker='circle', type='scatter') sg.set_y_limits(pad='0.1', plotid=i) bg = StackedRegressionGraph() bg.plotcontainer.spacing = 5 bg.plotcontainer.stack_order = 'top_to_bottom' for i, iso in enumerate(isos): baseline = iso.baseline bg.new_plot(ytitle=baseline.detector, xtitle='Time (s)', title='Baseline') if baseline.xs.shape[0]: bg.new_series(baseline.offset_xs, baseline.ys, color='red', type='scatter', fit=baseline.fit) bg.set_y_limits(pad='0.1', plotid=i) ig = StackedRegressionGraph() ig.plotcontainer.spacing = 5 ig.plotcontainer.stack_order = 'top_to_bottom' for i, iso in enumerate(isos): ig.new_plot(ytitle=iso.name, xtitle='Time (s)', title='Isotope') if iso.xs.shape[0]: ig.new_series(iso.offset_xs, iso.ys, color='blue', type='scatter', fit=iso.fit) ig.set_y_limits(pad='0.1', plotid=i) container.add(sg.plotcontainer) container.add(ig.plotcontainer) container.add(bg.plotcontainer) self.container = container
def show_evolutions_factory(record_id, isotopes, show_evo=True, show_equilibration=False, show_baseline=False): if WINDOW_CNT > 20: information(None, 'You have too many Isotope Evolution windows open. Close some before proceeding') return from pychron.graph.stacked_regression_graph import StackedRegressionGraph if not show_evo: xmi = Inf xma = -Inf else: xmi, xma = 0, -Inf g = StackedRegressionGraph(resizable=True) g.plotcontainer.spacing = 10 g.window_height = min(275 * len(isotopes), 800) g.window_x = OX + XOFFSET * WINDOW_CNT g.window_y = OY + YOFFSET * WINDOW_CNT isotopes = sort_isotopes(isotopes, reverse=False, key=lambda x: x.name) for i, iso in enumerate(isotopes): ymi, yma = Inf, -Inf p = g.new_plot(padding=[80, 10, 10, 40]) g.add_limit_tool(p, 'x') g.add_limit_tool(p, 'y') g.add_axis_tool(p, p.x_axis) g.add_axis_tool(p, p.y_axis) p.y_axis.title_spacing = 50 if show_equilibration: sniff = iso.sniff g.new_series(sniff.xs, sniff.ys, type='scatter', fit=None, color='red') ymi, yma = min_max(ymi, yma, sniff.ys) xmi, xma = min_max(xmi, xma, sniff.xs) if show_evo: g.new_series(iso.xs, iso.ys, fit=iso.fit, filter_outliers_dict=iso.filter_outliers_dict, color='black') ymi, yma = min_max(ymi, yma, iso.ys) xmi, xma = min_max(xmi, xma, iso.xs) if show_baseline: baseline = iso.baseline g.new_series(baseline.xs, baseline.ys, type='scatter', fit=baseline.fit, filter_outliers_dict=baseline.filter_outliers_dict, color='blue') ymi, yma = min_max(ymi, yma, baseline.ys) xmi, xma = min_max(xmi, xma, baseline.xs) g.set_x_limits(min_=xmi, max_=xma, pad='0.025,0.05') g.set_y_limits(min_=ymi, max_=yma, pad='0.05', plotid=i) g.set_x_title('Time (s)', plotid=i) g.set_y_title('{} (fA)'.format(iso.name), plotid=i) g.refresh() g.window_title = '{} {}'.format(record_id, ','.join([i.name for i in reversed(isotopes)])) return g
def show_evolutions_factory(record_id, isotopes, show_evo=True, show_equilibration=False, show_baseline=False): if WINDOW_CNT > 20: information( None, 'You have too many Isotope Evolution windows open. Close some before proceeding' ) return from pychron.graph.stacked_regression_graph import StackedRegressionGraph if not show_evo: xmi = Inf xma = -Inf else: xmi, xma = 0, -Inf g = StackedRegressionGraph(resizable=True) g.plotcontainer.spacing = 10 g.window_height = min(275 * len(isotopes), 800) g.window_x = OX + XOFFSET * WINDOW_CNT g.window_y = OY + YOFFSET * WINDOW_CNT isotopes = sort_isotopes(isotopes, reverse=False, key=lambda x: x.name) for i, iso in enumerate(isotopes): ymi, yma = Inf, -Inf p = g.new_plot(padding=[80, 10, 10, 40]) g.add_limit_tool(p, 'x') g.add_limit_tool(p, 'y') g.add_axis_tool(p, p.x_axis) g.add_axis_tool(p, p.y_axis) p.y_axis.title_spacing = 50 if show_equilibration: sniff = iso.sniff g.new_series(sniff.xs, sniff.ys, type='scatter', fit=None, color='red') ymi, yma = min_max(ymi, yma, sniff.ys) xmi, xma = min_max(xmi, xma, sniff.xs) if show_evo: g.new_series(iso.xs, iso.ys, fit=iso.fit, filter_outliers_dict=iso.filter_outliers_dict, color='black') ymi, yma = min_max(ymi, yma, iso.ys) xmi, xma = min_max(xmi, xma, iso.xs) if show_baseline: baseline = iso.baseline g.new_series(baseline.xs, baseline.ys, type='scatter', fit=baseline.fit, filter_outliers_dict=baseline.filter_outliers_dict, color='blue') ymi, yma = min_max(ymi, yma, baseline.ys) xmi, xma = min_max(xmi, xma, baseline.xs) g.set_x_limits(min_=xmi, max_=xma, pad='0.025,0.05') g.set_y_limits(min_=ymi, max_=yma, pad='0.05', plotid=i) g.set_x_title('Time (s)', plotid=i) g.set_y_title('{} (fA)'.format(iso.name), plotid=i) g.refresh() g.window_title = '{} {}'.format( record_id, ','.join([i.name for i in reversed(isotopes)])) return g
def setup_graph(self, an): container = HPlotContainer() container_dict = {'spacing': 5, 'stack_order': 'top_to_bottom'} sg = StackedGraph(container_dict=container_dict) sg.plotcontainer.spacing = 5 sg.plotcontainer.stack_order = 'top_to_bottom' isos = an.sorted_values(reverse=False) add_sniff = True sisos = [iso for iso in isos if iso.sniff.offset_xs.shape[0]] for i, iso in enumerate(sisos): sniff = iso.sniff sg.new_plot(ytitle=iso.name, xtitle='Time (s)', title='Equilibration') sg.new_series(sniff.offset_xs, sniff.ys, marker='circle', type='scatter') sg.set_y_limits(pad='0.1', plotid=i) sg.set_x_limits(min_=0, max_=max(sniff.offset_xs) * 1.05, plotid=i) bg = StackedRegressionGraph(container_dict=container_dict) add_baseline = True ig = StackedRegressionGraph(container_dict=container_dict) iisos = [iso for iso in isos if iso.offset_xs.shape[0]] baselines = [] for i, iso in enumerate(iisos): if iso.baseline.offset_xs.shape[0]: baselines.append(iso.baseline) ig.new_plot(ytitle='{}({})'.format(iso.name, iso.detector), xtitle='Time (s)', title='Isotope') ig.new_series(iso.offset_xs, iso.ys, display_filter_bounds=True, filter_outliers_dict=iso.filter_outliers_dict, color='blue', type='scatter', fit=iso.efit) ig.set_regressor(iso.regressor, i) ig.set_y_limits(pad='0.1', plotid=i) ig.set_x_limits(min_=0, max_=max(iso.offset_xs) * 1.05, plotid=i) ig.refresh() # bisos = [iso for iso in isos if iso.baseline.offset_xs.shape[0]] # plotted_baselines = [] # for i, iso in enumerate(bisos): # baseline = iso.baseline # if baseline.detector in plotted_baselines: # continue # plotted_baselines.append(baseline.detector) # for iso in bisos: for i, baseline in enumerate(baselines): bg.new_plot(ytitle=baseline.detector, xtitle='Time (s)', title='Baseline') bg.new_series(baseline.offset_xs, baseline.ys, filter_outliers_dict=baseline.filter_outliers_dict, display_filter_bounds=True, color='red', type='scatter', fit=baseline.efit) bg.set_regressor(baseline.regressor, i) bg.set_y_limits(pad='0.1', plotid=i) bg.set_x_limits(pad='0.025', plotid=i) bg.refresh() container.add(sg.plotcontainer) container.add(ig.plotcontainer) container.add(bg.plotcontainer) self.container = container