示例#1
0
def layout():

    date_select = DateRangeSlider(name="period",
                                  title="Period:",
                                  value=(start, end),
                                  bounds=(bounds_start, bounds_end),
                                  value_labels='show',
                                  range=(dict(days=1), None))
    date_select.on_change('value', on_date_change)

    country_select = Select(title="Host Site Country:",
                            value="World",
                            options=country_choices)
    country_select.on_change('value', on_country_change)

    controls = VBoxModelForm(_children=[
        Paragraph(text="Date Range"),
        Paragraph(text=""),  # spacing hack
        Paragraph(text=""),
        date_select,
        country_select
    ])

    vboxsmall = VBoxModelForm(_children=[controls, source_par])
    hbox1 = HBox(children=[job_loc_plot_builder(), vboxsmall])
    hbox2 = HBox(children=[weekday_builder(), jobtype_builder()])
    layout = VBox(children=[hbox1, hbox2])

    return layout
示例#2
0
def layout():

    date_select = DateRangeSlider(
        name="period",
        title="Period:",
        value=(start, end),
        bounds=(bounds_start, bounds_end),
        value_labels='show',
        range=(dict(days=1), None))
    date_select.on_change('value', on_date_change)

    country_select = Select(title="Host Site Country:", value="World",
                            options=country_choices)
    country_select.on_change('value', on_country_change)

    controls = VBoxModelForm(_children=[Paragraph(text="Date Range"),
                                        Paragraph(text=""),  # spacing hack
                                        Paragraph(text=""),
                                        date_select, country_select])

    vboxsmall = VBoxModelForm(_children=[controls, source_par])
    hbox1 = HBox(children=[job_loc_plot_builder(), vboxsmall])
    hbox2 = HBox(children=[weekday_builder(), jobtype_builder()])
    layout = VBox(children=[hbox1, hbox2])

    return layout
 def make_inputs(self):
     self.ticker1_select = Select(name='ticker1',
                                  value='AAPL',
                                  options=['AAPL', 'GOOG', 'INTC', 'BRCM', 'YHOO']
     )
     self.ticker2_select = Select(name='ticker2',
                                  value='GOOG',
                                  options=['AAPL', 'GOOG', 'INTC', 'BRCM', 'YHOO']
     )
示例#4
0
def layout():
    year_select = Select(title="Year:", value="2010", options=years)
    location_select = Select(title="Location:", value="World", options=locations)

    year_select.on_change('value', on_year_change)
    location_select.on_change('value', on_location_change)

    controls = HBox(children=[year_select, location_select])
    layout = VBox(children=[controls, pyramid(), population()])

    return layout
示例#5
0
def layout():
    year_select = Select(title="Year:", value="2010", options=years)
    location_select = Select(title="Location:", value="World", options=locations)

    year_select.on_change('value', on_year_change)
    location_select.on_change('value', on_location_change)

    controls = HBox(children=[year_select, location_select])
    layout = VBox(children=[controls, pyramid(), population()])

    return layout
示例#6
0
    def create_layout(self):
        from bokeh.widgetobjects import Select, HBox, VBox

        years = list(map(str, sorted(self.df.Year.unique())))
        locations = sorted(self.df.Location.unique())

        year_select = Select(title="Year:", value="2010", options=years)
        location_select = Select(title="Location:", value="World", options=locations)

        year_select.on_change('value', self.on_year_change)
        location_select.on_change('value', self.on_location_change)

        controls = HBox(children=[year_select, location_select])
        self.layout = VBox(children=[controls, self.plot])
示例#7
0
文件: stock_app.py 项目: rla3rd/bokeh
class StockApp(VBox):
    extra_generated_classes = [["StockApp", "StockApp", "VBox"]]
    jsmodel = "VBox"

    # text statistics
    pretext = Instance(PreText)

    # plots
    plot = Instance(Plot)
    line_plot1 = Instance(Plot)
    line_plot2 = Instance(Plot)
    hist1 = Instance(Plot)
    hist2 = Instance(Plot)

    # data source
    source = Instance(ColumnDataSource)

    # layout boxes
    mainrow = Instance(HBox)
    histrow = Instance(HBox)
    statsbox = Instance(VBox)

    # inputs
    ticker1 = String(default="AAPL")
    ticker2 = String(default="GOOG")
    ticker1_select = Instance(Select)
    ticker2_select = Instance(Select)
    input_box = Instance(VBoxForm)

    def __init__(self, *args, **kwargs):
        super(StockApp, self).__init__(*args, **kwargs)
        self._dfs = {}

    @classmethod
    def create(cls):
        """
        This function is called once, and is responsible for
        creating all objects (plots, datasources, etc)
        """
        # create layout widgets
        obj = cls()
        obj.mainrow = HBox()
        obj.histrow = HBox()
        obj.statsbox = VBox()
        obj.input_box = VBoxForm()

        # create input widgets
        obj.make_inputs()

        # outputs
        obj.pretext = PreText(text="", width=500)
        obj.make_source()
        obj.make_plots()
        obj.make_stats()

        # layout
        obj.set_children()
        return obj

    def make_inputs(self):
        self.ticker1_select = Select(name="ticker1", value="AAPL", options=["AAPL", "GOOG", "INTC", "BRCM", "YHOO"])
        self.ticker2_select = Select(name="ticker2", value="GOOG", options=["AAPL", "GOOG", "INTC", "BRCM", "YHOO"])

    @property
    def selected_df(self):
        pandas_df = self.df
        selected = self.source.selected
        if selected:
            pandas_df = pandas_df.iloc[selected, :]
        return pandas_df

    def make_source(self):
        self.source = ColumnDataSource(data=self.df)

    def line_plot(self, ticker, x_range=None):
        plot = circle(
            "date",
            ticker,
            title=ticker,
            size=2,
            x_range=x_range,
            x_axis_type="datetime",
            source=self.source,
            title_text_font_size="10pt",
            plot_width=1000,
            plot_height=200,
            nonselection_alpha=0.02,
            tools="pan,wheel_zoom,select",
        )
        return plot

    def hist_plot(self, ticker):
        global_hist, global_bins = np.histogram(self.df[ticker + "_returns"], bins=50)
        hist, bins = np.histogram(self.selected_df[ticker + "_returns"], bins=50)
        width = 0.7 * (bins[1] - bins[0])
        center = (bins[:-1] + bins[1:]) / 2
        start = global_bins.min()
        end = global_bins.max()
        top = hist.max()
        return rect(
            center,
            hist / 2.0,
            width,
            hist,
            title="%s hist" % ticker,
            plot_width=500,
            plot_height=200,
            tools="",
            title_text_font_size="10pt",
            x_range=[start, end],
            y_range=[0, top],
        )

    def make_plots(self):
        ticker1 = self.ticker1
        ticker2 = self.ticker2
        self.plot = circle(
            ticker1 + "_returns",
            ticker2 + "_returns",
            size=2,
            title="%s vs %s" % (ticker1, ticker2),
            source=self.source,
            plot_width=400,
            plot_height=400,
            tools="pan,wheel_zoom,select",
            title_text_font_size="10pt",
            nonselection_alpha=0.02,
        )
        self.line_plot1 = self.line_plot(ticker1)
        self.line_plot2 = self.line_plot(ticker2, self.line_plot1.x_range)
        self.hist_plots()

    def hist_plots(self):
        ticker1 = self.ticker1
        ticker2 = self.ticker2
        self.hist1 = self.hist_plot(ticker1)
        self.hist2 = self.hist_plot(ticker2)

    def set_children(self):
        self.children = [self.mainrow, self.histrow, self.line_plot1, self.line_plot2]
        self.mainrow.children = [self.input_box, self.plot, self.statsbox]
        self.input_box.children = [self.ticker1_select, self.ticker2_select]
        self.histrow.children = [self.hist1, self.hist2]
        self.statsbox.children = [self.pretext]

    def input_change(self, obj, attrname, old, new):
        if obj == self.ticker2_select:
            self.ticker2 = new
        if obj == self.ticker1_select:
            self.ticker1 = new
        self.make_source()
        self.make_plots()
        self.set_children()
        curdoc().add(self)

    def setup_events(self):
        super(StockApp, self).setup_events()
        if self.source:
            self.source.on_change("selected", self, "selection_change")
        if self.ticker1_select:
            self.ticker1_select.on_change("value", self, "input_change")
        if self.ticker2_select:
            self.ticker2_select.on_change("value", self, "input_change")

    def make_stats(self):
        stats = self.selected_df.describe()
        self.pretext.text = str(stats)

    def selection_change(self, obj, attrname, old, new):
        self.make_stats()
        self.hist_plots()
        self.set_children()
        curdoc().add(self)

    @property
    def df(self):
        return get_data(self.ticker1, self.ticker2)
示例#8
0
文件: stock_app.py 项目: rla3rd/bokeh
 def make_inputs(self):
     self.ticker1_select = Select(name="ticker1", value="AAPL", options=["AAPL", "GOOG", "INTC", "BRCM", "YHOO"])
     self.ticker2_select = Select(name="ticker2", value="GOOG", options=["AAPL", "GOOG", "INTC", "BRCM", "YHOO"])