def trace(self, twin=None): # TODO: should we just handle events in parse_ion_string? name_type = istr_type(self.name.lower()) # FIXME!!!!! if name_type == "events": return AstonSeries() # get a trace given my name tr_resolver = self.paletterun.trace trace = parse_ion_string(self.name.lower(), tr_resolver, twin) if trace is None: self.is_valid = False return None else: self.is_valid = True # offset and scale trace trace = trace * self.y_scale + self.y_offset if type(trace) is AstonSeries: trace = trace.adjust_time(offset=self.x_offset, scale=self.x_scale) else: trace = AstonSeries([trace], [0], name=self.name.lower()) return trace
def plot(self, ax, style, color, twin=None): name_type = istr_type(self.name.lower()) label = self.paletterun.run.name + " " + self.name if name_type == "events": df = self.paletterun.datafile(self.name.lower()) evts = df.events(self.name.lower().lstrip("*")) plot_events(evts, color=color, ax=ax) elif style in {"heatmap", "colors"}: # TODO: should only be on name_type == '2d' ? # need other ui changes first though # TODO: use colors self.frame(twin).plot(style=style, color=color, ax=ax) else: # TODO: should technically only be allowed on 1d plots trace = self.trace(twin) if trace is None: return ls = {"solid": "-", "dash": "--", "dot": ":", "dash-dot": "-."} trace.plot(ax=ax, style=ls[style], color=color, label=label)
def name_type(self): return istr_type(self.name.lower())