def test_callback_property_executes(self, bokeh_model_page):
        group = RadioButtonGroup(labels=LABELS, css_classes=["foo"])
        group.callback = CustomJS(code=RECORD("active", "cb_obj.active"))

        page = bokeh_model_page(group)

        el = page.driver.find_element_by_css_selector('.foo .bk-btn:nth-child(3)')
        el.click()

        results = page.results
        assert results['active'] == 2

        el = page.driver.find_element_by_css_selector('.foo .bk-btn:nth-child(1)')
        el.click()

        results = page.results
        assert results['active'] == 0

        assert page.has_no_console_errors()
示例#2
0
    def test_callback_property_executes(self, bokeh_model_page):
        group = RadioButtonGroup(labels=LABELS, css_classes=["foo"])
        group.callback = CustomJS(code=RECORD("active", "cb_obj.active"))

        page = bokeh_model_page(group)

        el = page.driver.find_element_by_css_selector('.foo .bk-btn:nth-child(3)')
        el.click()

        results = page.results
        assert results['active'] == 2

        el = page.driver.find_element_by_css_selector('.foo .bk-btn:nth-child(1)')
        el.click()

        results = page.results
        assert results['active'] == 0

        assert page.has_no_console_errors()
示例#3
0
    def test_callback_property_executes(self, bokeh_model_page):
        group = RadioButtonGroup(labels=LABELS, css_classes=["foo"])
        group.callback = CustomJS(code=RECORD("active", "cb_obj.active"))

        page = bokeh_model_page(group)

        el = page.driver.find_element_by_css_selector(
            'div.foo div label input[value="2"]')
        el = el.find_element_by_xpath('..')
        el.click()

        results = page.results
        assert results['active'] == 2

        el = page.driver.find_element_by_css_selector(
            'div.foo div label input[value="0"]')
        el = el.find_element_by_xpath('..')
        el.click()

        results = page.results
        assert results['active'] == 0

        assert page.has_no_console_errors()
示例#4
0
radio = RadioButtonGroup(labels=['Gauche', 'Droite'], active=0)
slider = Slider(start=10,
                end=100,
                value=10,
                step=1,
                title='Nombre de rectangles')

radio.callback = CustomJS(args=dict(radio=radio, left=left, right=right),
                          code="""
    switch(radio.active){
        case 0:
            left.visible = true;
            right.visible = false;
            break;
        case 1:
            left.visible = false;
            right.visible = true;
            break;
        default:
            left.visible = true;
            right.visible = true;
        }
""")

slider.callback = CustomJS(args=dict(source=source, slider=slider),
                           code="""
    var a = 0;
    var b = Math.PI;
    var data = source.data;
    var f = Math.cos;
    var x = a;
示例#5
0
文件: main.py 项目: PSLmodels/plots
radio_group.callback = CustomJS(args=sources,
                                code="""
  var capitalGainsType = radio_group.active === 0 ? capital_gains_no : capital_gains_yes;
  elasticity_option.set('labels', capitalGainsType.data.labels);

  while (elasticity_option.active > capitalGainsType.data.source_ids.length - 1) {
    elasticity_option.active = elasticity_option.active - 1;
  }

  ref.data = eval(capitalGainsType.data.source_ids[elasticity_option.active]).data;
  ref.trigger('change');
""")

elasticity_option.callback = CustomJS(args=sources,
                                      code="""
  var capitalGainsType = radio_group.active === 0 ? capital_gains_no : capital_gains_yes;
  ref.data = eval(capitalGainsType.data.source_ids[elasticity_option.active]).data;
  ref.trigger('change');
""")

# create layout -----------------
controls = column(radio_group_text, radio_group, elasticity_text,
                  elasticity_option)

plots = dict(header=title_div, left=controls, center=fig)
script, divs = components(plots)

template_args = dict()
template_args['bokeh_script'] = script
template_args['plots'] = divs
template_args['page_title'] = 'Box Plot'
render_template('responsive', template_args, 'index.html')
示例#6
0
def show_cells_on_stack(data,
                        stack,
                        X='X',
                        Y='Y',
                        channelNames=None,
                        group='group',
                        hue='hue',
                        palette='Spectral11',
                        default=0,
                        alpha=.5,
                        plot_width=500,
                        plot_height=500,
                        vmin=0,
                        vmax=3,
                        znorm=True):
    '''
    stack:  np. array of shape (nchannels,height,width)
    '''
    from bokeh.models import CheckboxGroup, RadioButtonGroup, Legend, LegendItem
    if not channelNames:
        channelNames = ['Channel ' + str(i) for i in range(len(stack))]
        print(channelNames)

    s1 = ColumnDataSource(data=data)
    p1 = figure(plot_width=plot_width,
                plot_height=plot_height,
                tools="pan,wheel_zoom,reset")

    channels = {}
    for i, channel in enumerate(channelNames):
        img = stack[i]
        if znorm:
            img = (img - img.mean()) / img.std()

        channels[i] = p1.image(image=[img],
                               x=[0],
                               y=[0],
                               dw=[plot_width],
                               dh=[plot_height],
                               color_mapper=LogColorMapper(palette=palette,
                                                           low=vmin,
                                                           high=vmax),
                               global_alpha=alpha,
                               visible=(i == default))

    plots = {}
    #scaled_coordinates to fit in stack_dw,stack_dh
    dh_ratio = plot_height / img.shape[0]
    dw_ratio = plot_width / img.shape[1]

    data['warped_X'] = data[X] * dw_ratio
    data['warped_Y'] = data[Y] * dh_ratio

    groups = list(data[group].unique())
    for g_id in groups:
        s2 = ColumnDataSource(data=data[data[group] == g_id])
        scatter = p1.circle('warped_X',
                            'warped_Y',
                            source=s2,
                            alpha=1,
                            color='hue')  #,legend_label = str(g_id))
        scatter.visible = False
        plots[g_id] = scatter

    select_celltype = CheckboxGroup(labels=groups, active=[], width=100)
    select_channel = RadioButtonGroup(labels=channelNames,
                                      active=default,
                                      width=100,
                                      orientation='horizontal')

    select_celltype.callback = CustomJS(args={
        'plots': plots,
        'groups': groups,
        'msel': select_celltype,
        'fig': p1
    },
                                        code="""
            //fig.title.text = 'new Title'
            for (var i =0; i<groups.length;i++){
               plots[groups[i]].visible = msel.active.indexOf(i)>-1
            }
               """)

    select_channel.callback = CustomJS(args={
        'channels': channels,
        'sel': select_channel,
        'fig': p1
    },
                                       code="""

        //fig.title.text = Object.keys(channels).length.toString()
        for (var i =0; i<Object.keys(channels).length;i++){
            channels[i].visible = false
        }
        var val = sel.active
        channels[val].visible = true


        /**
        if (val==0){
            fig.title.text = 'confirm upper'
            chan1.visible = true
            chan2.visible = false
            //bg_channel = [z[0]]

        }else if (val==1){
            fig.title.text = 'confirm lower'
            chan1.visible = false
            chan2.visible = true
            //bg_channel = [z[1]]

        }
        **/



    """)

    layout = column(p1, select_celltype, select_channel)
    show(layout)
示例#7
0
    }
    source_sf_rate1.trigger('change');
    source_sf_rate2.trigger('change');
    source_abq_rate1.trigger('change');
    source_abq_rate2.trigger('change');
    source_det_rate1.trigger('change');
    source_det_rate2.trigger('change');
    source_sf_price1.trigger('change');
    source_sf_price2.trigger('change');
    source_abq_price1.trigger('change');
    source_abq_price2.trigger('change');
    source_det_price1.trigger('change');
    source_det_price2.trigger('change');
    """)

radio_button_group_city.callback = callback
radio_button_group_outlier.callback = callback
radio_button_group_var.callback = callback

plot.xgrid.grid_line_color = None
plot.ygrid.grid_line_color = "white"
plot.grid.grid_line_width = 2
plot.xaxis.major_label_text_font_size="12pt"
#plot.xaxis.major_label_orientation = -pi/4

plot.xaxis.axis_label = 'Variable'
plot.yaxis.axis_label = 'Value'

layout_boxplot = column(row(radio_button_group_city, radio_button_group_var), radio_button_group_outlier, plot)

###output html file
示例#8
0
# create callbacks ---------------
radio_group.callback = CustomJS(args=sources, code="""
  var capitalGainsType = radio_group.active === 0 ? capital_gains_no : capital_gains_yes;
  elasticity_option.set('labels', capitalGainsType.data.labels);

  while (elasticity_option.active > capitalGainsType.data.source_ids.length - 1) {
    elasticity_option.active = elasticity_option.active - 1;
  }

  ref.data = eval(capitalGainsType.data.source_ids[elasticity_option.active]).data;
  ref.trigger('change');
""")

elasticity_option.callback = CustomJS(args=sources, code="""
  var capitalGainsType = radio_group.active === 0 ? capital_gains_no : capital_gains_yes;
  ref.data = eval(capitalGainsType.data.source_ids[elasticity_option.active]).data;
  ref.trigger('change');
""")


# create layout -----------------
controls = column(radio_group_text,
                  radio_group,
                  elasticity_text,
                  elasticity_option)

plots = dict(header=title_div, left=controls, center=fig)
script, divs = components(plots)

template_args = dict()
template_args['bokeh_script'] = script