On Jan 10, 2017, at 8:02 PM, [email protected] wrote:
Hi Bryan
Can you explain what this piece of code is doing here:
source.data = update_data(species[new])
Thanks,
Pratik
On Tuesday, 10 January 2017 16:27:14 UTC-5, pratik...@gmail.com wrote:
Hi Bryan,
Thank you for this example. I think this will help and I will definitely try to see the time series examples.
Thank you for your so quick responses. Really appreciate the support, especially what you are providing.
Thanks,
Pratik
On Tuesday, 10 January 2017 15:47:39 UTC-5, Bryan Van de ven wrote:
Hi,
Sometimes it's good to take a step back and break up a problem into smaller pieces. First, a few comments:
* You can put any print statements you like in the app, in the callbacks, etc. They will show in the console where you run the server
* I'd suggest looking in the docs gallery for other time series examples, and getting the plot to work all by itself, without the server, first
Lastly, here is a complete but much simpler example that uses a radio button to update a plot, that you can run and study, in case it is instructive:
from bokeh.io import curdoc, output_file
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, RadioButtonGroup
from bokeh.plotting import figure
from bokeh.sampledata.iris import flowers
species = ['setosa', 'versicolor', 'virginica']
def update_data(species):
subset = flowers[flowers.species==species]
return dict(
sepal_width=subset.sepal_width,
sepal_length=subset.sepal_length,
)
source = ColumnDataSource()
source.data = update_data('setosa')
def callback(new):
source.data = update_data(species[new])
button_group = RadioButtonGroup(labels=species, active=0)
button_group.on_click(callback)
plot = figure()
plot.circle(x='sepal_width', y='sepal_length', source=source)
curdoc().add_root(column(button_group, plot))
Thanks,
Bryan
> On Jan 10, 2017, at 2:44 PM, pratik...@gmail.com wrote:
>
> Well, I appreciate your reply Bryan - but I am able to generate plots with the datatype I have. Do you think the other logic I have used is fine, meaning the RadioButtonGroup and the callback function?
>
> Also, how and where can I see the printed objects? I am assuming in the command window, correct? If yes I am not able to apparently! Do you example snippet for that?
>
> I did try this from one of your suggestions, but this did not work on server
>
> Thanks
> Pratik
>
>
> On Tuesday, 10 January 2017 15:35:44 UTC-5, Bryan Van de ven wrote:
> After making several changes, I ran the version below to get some information.
>
> The problem I would say is with your data. You are converting everything to strings? I really doubt that's what you want or intend, and if that's the case, times need to be real datetime objects of some sort, not strings. If not, and you do want string values, you need to configure the plot ranges to be categorical:
>
> http://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html#categorical-axes
>
> Thanks,
>
> Bryan
>
> from bokeh.io import curdoc, output_file, show, push_notebook
> from bokeh.layouts import column,row,widgetbox
> from bokeh.models import HoverTool, Select, ColumnDataSource, BoxSelectTool, BoxZoomTool, CrosshairTool, ResetTool, ResizeTool, CustomJS, LassoSelectTool
> from bokeh.plotting import figure, reset_output
> from bokeh.models.widgets import Panel, Tabs, DataTable, DateFormatter, TableColumn, Button, DatePicker, Button, RadioButtonGroup
> import pandas as pd
> from numpy.random import random, normal, lognormal
>
> data = pd.DataFrame(data={'DepartmentProviderName':['Pysch1','Pysch1','Pysch2','Pysch2','Pysch3','Pysch3'],'CountAtStart':[10,15,16,14,11,10], 'Census':[10,12,15,12,13,14], 'Month':[9,9,9,9,10,10], 'Dt':['9/27/2016 1:00:00 AM','9/26/2016 1:00:00 AM','9/27/2016 1:00:00 AM','9/28/2016 1:00:00 AM','9/29/2016 1:00:00 AM','9/30/2016 1:00:00 AM']})
> print(data)
>
> menu = Select(options=['Med1','Med2'], value='Med1', title='Select DepartmentType')
>
> test = ColumnDataSource(data=dict(Dt=, Census=,CountAtStart=))
>
> def radio_button_group_handler(new):
> new = ['Pysch1', 'Pysch2','Pysch3'][new]
> print(new)
> current = data[(data.DepartmentProviderName == "%s" % new) & (data.Month == 9)]
> test.data = {
> 'Dt' : list(current.Dt),
> 'Census' : list(current.Census.apply(lambda v: "{:.2f}".format(v))),
> 'CountAtStart' : list(current.CountAtStart.apply(lambda v: "{:.2f}".format(v))),
> }
> print(test.data)
>
> depkey = ['Pysch1', 'Pysch2','Pysch3']
> button_group = RadioButtonGroup(labels=depkey, active=0)
> button_group.on_click(radio_button_group_handler)
> SAHbutton = widgetbox(button_group, width = 500)
>
> facdept_plot = figure(plot_width=1100, plot_height=600, x_axis_type = 'datetime')
> facdept_plot.line(x='Dt', y='Census', source=test, line_dash=[4, 4], color='purple', alpha = 0.8, line_width=2, legend='Predicted')
> facdept_plot.line(x='Dt', y='CountAtStart', source=test, color='blue', alpha = 0.3, line_width=2, legend='Actual')
>
> l1 = column(SAHbutton, facdept_plot)
> SAHtab = Panel(child = l1, title='Test')
>
> layout = Tabs(tabs = [SAHtab], width = 500)
>
> final_layout = row(menu,layout)
>
> curdoc().add_root(final_layout)
>
>
> > On Jan 10, 2017, at 2:20 PM, pratik...@gmail.com wrote:
> >
> > from bokeh.io import curdoc, output_file, show, push_notebook
> > from bokeh.layouts import column,row,widgetbox
> > from bokeh.models import HoverTool, Select, ColumnDataSource, BoxSelectTool, BoxZoomTool, CrosshairTool, ResetTool, ResizeTool, CustomJS, HBox, VBox, VBoxForm, LassoSelectTool
> > from bokeh.plotting import figure, reset_output
> > from bokeh.models.widgets import Panel, Tabs, DataTable, DateFormatter, TableColumn, Button, DatePicker, Button, RadioButtonGroup
> > from numpy.random import random, normal, lognormal
> >
> > test = pd.DataFrame(data={'DepartmentProviderName':['Pysch1','Pysch1','Pysch2','Pysch2','Pysch3','Pysch3'],'CountAtStart':[10,15,16,14,11,10], 'Census':[10,12,15,12,13,14], 'Month':[9,9,9,9,10,10], 'Dt':['9/27/2016 1:00:00 AM','9/26/2016 1:00:00 AM','9/27/2016 1:00:00 AM','9/28/2016 1:00:00 AM','9/29/2016 1:00:00 AM','9/30/2016 1:00:00 AM']})
> >
> > menu = Select(options=['Med1','Med2'], value='Med1', title='Select DepartmentType')
> >
> > test = ColumnDataSource(data=dict(Dt=Census=,CountAtStart=))
> >
> > def radio_button_group_handler(new):
> > current = data[(data.DepartmentProviderName == "%s" % new) & (data.Month == 9)]
> > test.data = {
> > 'Dt' : current.Dt,
> > 'Census' : current.Census.apply(lambda v: "{:.2f}".format(v)),
> > 'CountAtStart' : current.CountAtStart.apply(lambda v: "{:.2f}".format(v)),
> > }
> >
> > depkey = list(totData.DepartmentProviderName[totData.FacilityName == "St. Anne's"].unique())
> > button_group = RadioButtonGroup(labels=depkey, active=0)
> > button_group.on_click(radio_button_group_handler)
> > SAHbutton = widgetbox(button_group, width = 500)
> >
> > facdept_plot = figure(plot_width=1100, plot_height=600, x_axis_type = 'datetime')
> > facdept_plot.line(x='Dt', y='Census', source=test, line_dash=[4, 4], color='purple', alpha = 0.8, line_width=2, legend='Predicted')
> > facdept_plot.line(x='Dt', y='CountAtStart', source=test, color='blue', alpha = 0.3, line_width=2, legend='Actual')
> >
> > l1 = column(SAHbutton, facdept_plot)
> > SAHtab = Panel(child = l1, title='Test')
> >
> > layout = Tabs(tabs = [SAHtab], width = 500)
> >
> > final_layout = row(menu,layout)
> >
> > curdoc().add_root(final_layout)
> >
> >
> > Hi Bryan,
> >
> > How about now?
> >
> > On Tuesday, 10 January 2017 15:03:24 UTC-5, Bryan Van de ven wrote:
> > Hi,
> >
> > Almost, but not quite. I can't run it because it uses some data that is not present. Can you supply the data? Or usually better, provide a minimal complete, runnable example with some kind of faked data.
> >
> > Thanks,
> >
> > Bryan
> >
> > > On Jan 10, 2017, at 1:53 PM, pratik...@gmail.com wrote:
> > >
> > > from bokeh.io import curdoc, output_file, show, push_notebook
> > > from bokeh.layouts import column,row,widgetbox
> > > from bokeh.models import HoverTool, Select, ColumnDataSource, BoxSelectTool, BoxZoomTool, CrosshairTool, ResetTool, ResizeTool, CustomJS, HBox, VBox, VBoxForm, LassoSelectTool
> > > from bokeh.plotting import figure, reset_output
> > > from bokeh.models.widgets import Panel, Tabs, DataTable, DateFormatter, TableColumn, Button, DatePicker, Button, RadioButtonGroup
> > > from numpy.random import random, normal, lognormal
> > >
> > > menu = Select(options=['Med1','Med2'], value='Med1', title='Select DepartmentType')
> > >
> > > test = ColumnDataSource(data=dict(Dt=,Census=,CountAtStart=))
> > >
> > > def radio_button_group_handler(new):
> > > current = data[(data.DepartmentProviderName == "%s" % new) & (data.Month == 9)]
> > > test.data = {
> > > 'Dt' : current.Dt,
> > > 'Census' : current.Census.apply(lambda v: "{:.2f}".format(v)),
> > > 'CountAtStart' : current.CountAtStart.apply(lambda v: "{:.2f}".format(v)),
> > > }
> > >
> > > depkey = list(totData.DepartmentProviderName[totData.FacilityName == "St. Anne's"].unique())
> > > button_group = RadioButtonGroup(labels=depkey, active=0)
> > > button_group.on_click(radio_button_group_handler)
> > > SAHbutton = widgetbox(button_group, width = 500)
> > >
> > > facdept_plot = figure(plot_width=1100, plot_height=600, x_axis_type = 'datetime')
> > > facdept_plot.line(x='Dt', y='Census', source=test, line_dash=[4, 4], color='purple', alpha = 0.8, line_width=2, legend='Predicted')
> > > facdept_plot.line(x='Dt', y='CountAtStart', source=test, color='blue', alpha = 0.3, line_width=2, legend='Actual')
> > >
> > > l1 = column(SAHbutton, facdept_plot)
> > > SAHtab = Panel(child = l1, title='Test')
> > >
> > > layout = Tabs(tabs = [SAHtab], width = 500)
> > >
> > > final_layout = row(menu,layout)
> > >
> > > curdoc().add_root(final_layout)
> > >
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
> > To post to this group, send email to bo...@continuum.io.
> > To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/3d718896-634b-44e9-99d8-477cb0672e48%40continuum.io\.
> > For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
>
>
> --
> You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
> To post to this group, send email to bo...@continuum.io.
> To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/c0c9de54-32b4-49a9-8b2f-464845f27970%40continuum.io\.
> For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/d20037f7-bcb5-45b9-bd2e-fe9d3ec5eeef%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.