Пример #1
0
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)
Пример #2
0
    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
Пример #3
0
 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))
Пример #4
0
    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
Пример #5
0
 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
Пример #6
0
    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())])))