def plot_bokeh(): from bokeh.plotting import figure, output_file, show import bokeh.plotting as bk #set output file output_file("pressure.html", title="XGS600 Pressure") # Create a set of tools to use TOOLS = "pan,box_zoom,reset,resize,ywheel_zoom" # Plot a `line` renderer setting the color, line thickness, title, and legend value. p1 = figure(title="XGS600", x_axis_type="datetime", tools=TOOLS, y_axis_type="log", y_range=[10**-7, 10**3], x_axis_label='GM Time', y_axis_label='Torr', plot_width=500) p1.line(xg.index, xg['Pressure CNV1'], legend='Pressure CNV1') # Plot a `line` renderer setting the color, line thickness, title, and legend value. p2 = figure(title="XGS600", x_axis_type="datetime", tools=TOOLS, y_axis_type="log", y_range=[10**-7, 10**3], x_axis_label='GM Time', y_axis_label='Torr', plot_width=500) p2.line(xg.index, xg['Pressure IMG1'], legend='Pressure IMG1') gp = bk.GridPlot(children=[[p1, p2]]) show(gp)
def GridPlot(self, row, filename, arangement, show, style): gp = bk.GridPlot(children=style(rows=arangement(list(row.values())))) # plotinterface.show if filename: bk.save(gp, filename) if show: return bk.show(gp) else: return gp
def show_multi(self, ys, locs, x='Pos', style=defstyle, **kwargs): bk.figure() rows = [] for i, y in enumerate(ys): figs = plot.plot_cases(self, y=y, x=x, order=locs, legend=True, **kwargs) rows.append(figs) return bk.GridPlot(children=style(rows=rows))
def _draw(self, x, y, z, overlay, inst_func, style=defstyle, **kwargs): import numpy as np def greatest_divisor(number): if number == 1: return 1 for i in reversed(range(number)): if number % i == 0: return i else: return 1 if not overlay: rows = [] for name, instance in self.cases.items(): figure = bk.figure() rows.append( getattr(instance, inst_func)(x=x, y=y, title=str(name), figure=figure, **kwargs) #FIXME num cars ) rows = np.array(rows).reshape(greatest_divisor(len(rows)), -1).tolist() return bk.GridPlot(children=style(rows), title="Scatter") else: figure = bk.figure() colors = plot.next_color() exp_legend = kwargs.get("legend", None) if exp_legend != None: kwargs.pop("legend") exp_title = kwargs.get("title", None) if exp_title != None: kwargs.pop("title") for name, instance in self.cases.items(): color = next(colors) legend = (exp_legend if exp_legend != None else name) title = (exp_title if exp_title != None else "") getattr(instance, inst_func)(x=x, y=y, title=title, color=color, legend=legend, figure=figure, **kwargs) return figure
def show(self, y, x='Pos', z=False, overlay="Field", style=defstyle, filename=None, show=True, **kwargs): """ Display single quantity y over multiple cases if overlay is set all cases are plotted in to single graph """ # TODO if not overlay, common part should be figure title style = (compose_styles(style, []) if isinstance(style, list) else style) dashes = cycle([[8, 4], [4, 4], [4, 2], [1, 1]]) cases = list(self.cases.keys()) row = self.cases[cases[0]].show(x=x, y=y, overlay=overlay, legend_prefix=cases[0], style=style, post_pone_style=True, titles=y, **kwargs) for c, d, col in zip(cases[1:], dashes, colored[1:]): row = self.cases[c].show(x=x, y=y, overlay=overlay, legend_prefix=c, style=style, row=row, post_pone_style=True, line_dash=d, titles=y, color=col, **kwargs) gp = bk.GridPlot(children=style(rows=arangement(list(row.values())))) if filename: bk.save(gp, filename) if show: return bk.show(gp) else: return gp
def show(self, y, x="Pos", figure=False, overlay="Field", style=defstyle, legend_prefix="", post_pone_style=False, row=None, titles=None, **kwargs): style = (compose_styles(style, []) if isinstance(style, list) else style) if kwargs.get("props", False): props = kwargs.pop("props") self.properties.plot_properties.set(props) def create_figure(y_, f, title=""): if kwargs.get("title"): title = kwargs.get("title") kwargs.pop("title") return getattr(self, self.properties.show_func)( y=y_, x=x, figure=f, legend_prefix=legend_prefix, title=title, **kwargs) def create_figure_row(y, arow=None): arow = (arow if arow else OrderedDict()) if not self.grouped: y = (y if isinstance(y, list) else [y]) if overlay == "Field": # SINGLE FIGURE MUTLIPLE FIELDS fig_id, f = (figure if figure else ("".join(y), plt.figure())) for yi in y: create_figure(y, f) arow[fig_id] = f if not overlay: # MULTIPLE FIGURES # test if figure with same id already exists # so that we can plot into it # otherwise create a new figure for i, yi in enumerate(y): title = ("" if not titles else titles[i]) fig_id, f = ((yi, arow[yi]) if arow.get(yi, False) else (yi, plt.figure(title=title))) arow[fig_id] = create_figure(yi, f, title=title) if self.grouped: groups = list(set(self["Group"]) if self["Group"] else set()) groups.sort() if overlay == "Group": # ALIGN ALONG GROUPS # for every yi a new figure is needed #arow = (arow if arow else OrderedDict()) for yi in y: fig_id, f = ((yi, arow[yi]) if arow.get(yi, False) else (yi, plt.figure())) colors = plt.next_color() for name in groups: color = next(colors) arow[yi] = self.at("Group", name).show( x=x, y=yi, title=yi, figure=(fig_id, f), post_pone_style=True, overlay="Field", color=color, legend_prefix=legend_prefix, legend=str(name), **kwargs)[yi] if overlay == "Field": # row = (arow if arow else OrderedDict()) for group in groups: fig_id, f = ((group, arow[group]) if arow.get( group, False) else (group, plt.figure())) field = self.at("Group", group) arow[group] = field.show(x=x, y=y, title=str(group), figure=(group, f), overlay="Field", post_pone_style=True, legend_prefix=legend_prefix, **kwargs)[group] return arow fig_row = create_figure_row(y, row) return (fig_row if post_pone_style else bk.GridPlot(children=style( rows=[list(fig_row.values())])))