Esempio n. 1
0
 def create_color_pickers(self) -> column:
     color_pickers = []
     for i, plot in enumerate(self.plot):
         picker = ColorPicker(color=plot.glyph.fill_color, width=100)
         picker.on_change("color", partial(self.handle_color_change, i))
         color_pickers.append(picker)
     return column(*color_pickers)
Esempio n. 2
0
 def create_color_pickers(self) -> list:
     colors = self.source.data["color"]
     color_pickers = []
     for i, category in enumerate(self.categories):
         title = "Color" if i == 0 else ""
         picker = ColorPicker(color=colors[i], title=title, width=100)
         picker.on_change("color", partial(self.handle_color_change, i))
         color_pickers.append(picker)
     return color_pickers
Esempio n. 3
0
def modify_doc(doc):
    source = ColumnDataSource(dict(x=[1, 2], y=[1, 1], val=["a", "b"]))
    plot = Plot(plot_height=400, plot_width=400, x_range=Range1d(0, 1), y_range=Range1d(0, 1), min_border=0)

    plot.add_glyph(source, Circle(x='x', y='y'))
    plot.add_tools(CustomAction(callback=CustomJS(args=dict(s=source), code=RECORD("data", "s.data"))))
    colorpicker = ColorPicker(color='red', css_classes=["foo"])

    def cb(attr, old, new):
        source.data['val'] = [old.lower(), new.lower()]  # ensure lowercase of hexa strings

    colorpicker.on_change('color', cb)
    doc.add_root(column(colorpicker, plot))
    return doc
Esempio n. 4
0
 def _redraw_conditions(self):
     self._root_widget.children = []
     current_row = Row()
     cond_idx = 0
     for cond in self._conditions:
         cp = ColorPicker(color=self.colors.get(cond, "blue"),
                          title=cond,
                          width=60)
         cp.on_change(
             "color", lambda attr, old, new: self._update_color(
                 cond, attr, old, new))
         self.color_pickers[cond] = cp
         if cond_idx == self._columns:
             self._root_widget.children.append(current_row)
             current_row = Row()
         current_row.children.append(cp)
     self._root_widget.children.append(current_row)
Esempio n. 5
0
    def test_display_color_input(self,
                                 bokeh_model_page: BokehModelPage) -> None:
        colorpicker = ColorPicker()
        page = bokeh_model_page(colorpicker)

        el = find_element_for(page.driver, colorpicker, "input")
        assert el.get_attribute('type') == "color"

        assert page.has_no_console_errors()
Esempio n. 6
0
    def test_input_value(self, bokeh_model_page: BokehModelPage) -> None:
        colorpicker = ColorPicker(color="red")
        page = bokeh_model_page(colorpicker)

        el = find_element_for(page.driver, colorpicker, "input")

        assert el.get_attribute('value') == '#ff0000'

        assert page.has_no_console_errors()
Esempio n. 7
0
    def test_display_color_input(self, bokeh_model_page) -> None:
        colorpicker = ColorPicker(css_classes=["foo"])

        page = bokeh_model_page(colorpicker)

        el = page.driver.find_element_by_css_selector('.foo input')
        assert el.get_attribute('type') == "color"

        assert page.has_no_console_errors()
Esempio n. 8
0
    def test_input_value(self, bokeh_model_page) -> None:
        colorpicker = ColorPicker(color='red', css_classes=["foo"])

        page = bokeh_model_page(colorpicker)

        el = page.driver.find_element_by_css_selector('.foo input')

        assert el.get_attribute('value') == '#ff0000'

        assert page.has_no_console_errors()
Esempio n. 9
0
    def test_displays_title(self, bokeh_model_page):
        colorpicker = ColorPicker(css_classes=["foo"], title="title")

        page = bokeh_model_page(colorpicker)

        el = page.driver.find_element_by_css_selector('.foo label')
        assert el.text == "title"

        el = page.driver.find_element_by_css_selector('.foo input')
        assert el.get_attribute('type') == "color"

        assert page.has_no_console_errors()
Esempio n. 10
0
    def test_server_on_change_round_trip(
            self, bokeh_server_page: BokehServerPage) -> None:
        colorpicker = ColorPicker(color="red")
        page = bokeh_server_page(mk_modify_doc(colorpicker))

        el = find_element_for(page.driver, colorpicker, "input")

        # new value
        enter_value_in_color_picker(page.driver, el, '#0000ff')
        page.eval_custom_action()
        results = page.results
        assert results['data']['val'] == ['#ff0000', '#0000ff']
Esempio n. 11
0
def getTimeSeries_working(df_tws):

    df_tws['date'] = pd.to_datetime(df_tws['date'], format='%m/%d/%Y')
    grouped = df_tws.groupby(
        [pd.Grouper(key='date', freq='M'),
         'keyword'])['sentiment'].count().to_frame(name='count').reset_index()
    # pivot = df_tws.pivot_table(index='date', columns=pd.Grouper(key = 'date', freq='W'), values  = 'sentiment', aggfunc='count')
    # print(pivot.info())
    # grouped = pivot.groupby(pd.Grouper(key='date', freq='D'))['keyword'].count()
    print(grouped)
    source = ColumnDataSource(grouped)
    p = figure(plot_height=400, x_axis_type='datetime')
    p.line(x='date', y='count', line_width=2, source=source, legend='Music')
    p.line(x='date', y='count', line_width=2, source=source, legend='Art')
    p.yaxis.axis_label = 'Number of Tweets'

    color_picker = ColorPicker(color="#ff4466",
                               title="Choose color:",
                               width=200)
    #p.add_layout(color_picker)
    show(color_picker)
    return p
Esempio n. 12
0
node_size_dropdown = Dropdown(label="Node size based on",
                              menu=Setter.NODE_BASED_ON)
node_size_dropdown.on_event('menu_item_click',
                            VisualizerHandler.node_size_based_callback)
CACHE.widgets.node_size_dropdown = node_size_dropdown

node_color_dropdown = Dropdown(label="Node color based on",
                               menu=Setter.NODE_COLORS)
node_color_dropdown.on_event('menu_item_click',
                             VisualizerHandler.node_color_callback)
CACHE.widgets.node_color_dropdown = node_color_dropdown

# ------------------ Other widgets ------------------- #

color_picker = ColorPicker(title="Color picker")
color_picker.on_change('color', VisualizerHandler.color_callback)
CACHE.widgets.color_picker = color_picker

# -------------------------------------- Statistics visualisation ----------------------------------------------------

default_stat_tools = "save,hover,"

adjacency_tooltips = [("Weight", "@size")]

p_adjacency = figure(title="Adjacency matrix",
                     toolbar_location="above",
                     tooltips=adjacency_tooltips,
                     tools=default_stat_tools,
                     output_backend="webgl",
                     **STATIC.figure)
Esempio n. 13
0
 def create_color_picker(self) -> ColorPicker:
     picker = ColorPicker(title="Color", color=self.text_color, width=100)
     picker.on_change("color", self.handle_color_change)
     return picker
    def __init__(self, image_views, disp_min=0, disp_max=1000, colormap="plasma"):
        """Initialize a colormapper.

        Args:
            image_views (ImageView): Associated streamvis image view instances.
            disp_min (int, optional): Initial minimal display value. Defaults to 0.
            disp_max (int, optional): Initial maximal display value. Defaults to 1000.
            colormap (str, optional): Initial colormap. Defaults to 'plasma'.
        """
        lin_colormapper = LinearColorMapper(
            palette=cmap_dict[colormap], low=disp_min, high=disp_max
        )

        log_colormapper = LogColorMapper(palette=cmap_dict[colormap], low=disp_min, high=disp_max)

        for image_view in image_views:
            image_view.image_glyph.color_mapper = lin_colormapper

        color_bar = ColorBar(
            color_mapper=lin_colormapper,
            location=(0, -5),
            orientation="horizontal",
            height=15,
            width=100,
            padding=5,
        )
        self.color_bar = color_bar

        # ---- selector
        def select_callback(_attr, _old, new):
            if new in cmap_dict:
                lin_colormapper.palette = cmap_dict[new]
                log_colormapper.palette = cmap_dict[new]
                high_color.color = cmap_dict[new][-1]

        select = Select(
            title="Colormap:", value=colormap, options=list(cmap_dict.keys()), default_size=100
        )
        select.on_change("value", select_callback)
        self.select = select

        # ---- auto toggle button
        def auto_toggle_callback(state):
            if state:
                display_min_spinner.disabled = True
                display_max_spinner.disabled = True
            else:
                display_min_spinner.disabled = False
                display_max_spinner.disabled = False

        auto_toggle = CheckboxGroup(labels=["Auto Colormap Range"], default_size=145)
        auto_toggle.on_click(auto_toggle_callback)
        self.auto_toggle = auto_toggle

        # ---- scale radiobutton group
        def scale_radiobuttongroup_callback(selection):
            if selection == 0:  # Linear
                for image_view in image_views:
                    image_view.image_glyph.color_mapper = lin_colormapper
                color_bar.color_mapper = lin_colormapper
                color_bar.ticker = BasicTicker()

            else:  # Logarithmic
                if self.disp_min > 0:
                    for image_view in image_views:
                        image_view.image_glyph.color_mapper = log_colormapper
                    color_bar.color_mapper = log_colormapper
                    color_bar.ticker = LogTicker()
                else:
                    scale_radiobuttongroup.active = 0

        scale_radiobuttongroup = RadioGroup(
            labels=["Linear", "Logarithmic"], active=0, default_size=145
        )
        scale_radiobuttongroup.on_click(scale_radiobuttongroup_callback)
        self.scale_radiobuttongroup = scale_radiobuttongroup

        # ---- display max value
        def display_max_spinner_callback(_attr, _old_value, new_value):
            self.display_min_spinner.high = new_value - STEP
            if new_value <= 0:
                scale_radiobuttongroup.active = 0

            lin_colormapper.high = new_value
            log_colormapper.high = new_value

        display_max_spinner = Spinner(
            title="Max Display Value:",
            low=disp_min + STEP,
            value=disp_max,
            step=STEP,
            disabled=bool(auto_toggle.active),
            default_size=145,
        )
        display_max_spinner.on_change("value", display_max_spinner_callback)
        self.display_max_spinner = display_max_spinner

        # ---- display min value
        def display_min_spinner_callback(_attr, _old_value, new_value):
            self.display_max_spinner.low = new_value + STEP
            if new_value <= 0:
                scale_radiobuttongroup.active = 0

            lin_colormapper.low = new_value
            log_colormapper.low = new_value

        display_min_spinner = Spinner(
            title="Min Display Value:",
            high=disp_max - STEP,
            value=disp_min,
            step=STEP,
            disabled=bool(auto_toggle.active),
            default_size=145,
        )
        display_min_spinner.on_change("value", display_min_spinner_callback)
        self.display_min_spinner = display_min_spinner

        # ---- high color
        def high_color_callback(_attr, _old_value, new_value):
            lin_colormapper.high_color = new_value
            log_colormapper.high_color = new_value

        high_color = ColorPicker(
            title="High Color:", color=cmap_dict[colormap][-1], default_size=90
        )
        high_color.on_change("color", high_color_callback)
        self.high_color = high_color

        # ---- mask color
        def mask_color_callback(_attr, _old_value, new_value):
            lin_colormapper.nan_color = new_value
            log_colormapper.nan_color = new_value

        mask_color = ColorPicker(title="Mask Color:", color="gray", default_size=90)
        mask_color.on_change("color", mask_color_callback)
        self.mask_color = mask_color
Esempio n. 15
0
multi_select = MultiSelect(options=["Option %d" % (i+1) for i in range(16)], size=6)

multi_choice = MultiChoice(options=["Option %d" % (i+1) for i in range(16)])

slider = Slider(value=10, start=0, end=100, step=0.5)

range_slider = RangeSlider(value=[10, 90], start=0, end=100, step=0.5)

date_slider = DateSlider(value=date(2016, 1, 1), start=date(2015, 1, 1), end=date(2017, 12, 31))

date_range_slider = DateRangeSlider(value=(date(2016, 1, 1), date(2016, 12, 31)), start=date(2015, 1, 1), end=date(2017, 12, 31))

spinner = Spinner(value=100)

color_picker = ColorPicker(color="red", title="Choose color:")

date_picker = DatePicker(value=date(2017, 8, 1))

paragraph = Paragraph(text="some text")

div = Div(text="some <b>text</b>")

pre_text = PreText(text="some text")

def mk_tab(color):
    plot = figure(width=300, height=300)
    plot.scatter(flowers["petal_length"], flowers["petal_width"], color=color, fill_alpha=0.2, size=12)
    return Panel(title="Tab 1: %s" % color.capitalize(), child=plot)

tabs = Tabs(tabs=[mk_tab("red"), mk_tab("green"), mk_tab("blue")])
# data widgets
line_length = Slider(title="Line Length",
                     value=250,
                     start=0,
                     end=1000,
                     step=10)
line_gap = Slider(title="Line Gap", value=50, start=0, end=1000, step=10)
row_density = Slider(title="Row Density", value=80, start=0, end=90, step=10)
column_density = Slider(title="Column Density",
                        value=80,
                        start=0,
                        end=90,
                        step=10)

# plotting widgets
row_color_widget = ColorPicker(title="Row Color")
column_color_widget = ColorPicker(title="Column Color")
row_color_widget.js_link('color', horizontal_lines.glyph, 'line_color')
column_color_widget.js_link('color', vertical_lines.glyph, 'line_color')

line_thickness = Slider(title="Line Thickness",
                        value=1,
                        start=0,
                        end=10,
                        step=1)
line_thickness.js_link('value', vertical_lines.glyph, 'line_width')
line_thickness.js_link('value', horizontal_lines.glyph, 'line_width')


# Set up callbacks
def update_data(attrname, old, new):
Esempio n. 17
0
<br>
<b>press</b> for quicker updates with a value multiplier (currently <ref id="{page_step_multiplier.id}"></ref>).
""",
                                 refs=[page_step_multiplier]),
                    position="right",
                    target=spinner,
                    closable=True,
                    visible=True)

tooltip_1 = Tooltip(content=HTML("""\
Your <b>choice</b> of color.<br>See more in bokeh's <a href="https://docs.bokeh.org/en/latest/">docs</a>.
"""),
                    position="right")

color_picker = ColorPicker(color="red",
                           title="Choose color:",
                           description=tooltip_1)

date_picker = DatePicker(value=date(2017, 8, 1))

switch_0 = Switch(active=False)

switch_1 = Switch(active=True, context_menu=Menu())

switch_help = HelpButton(tooltip=Tooltip(content=HTML("""
This is an <b>on</b> or <b>off</b> style of widget.
<br>
Right click on the widget to display the context menu.
"""),
                                         position="right"))
from bokeh.io import show
from bokeh.models import ColumnDataSource, CustomJS, ColorPicker
from bokeh.plotting import Figure
from bokeh.layouts import row, widgetbox
cds = ColumnDataSource(data=dict(x=(0, 1), y=(0, 1)))

p = Figure(x_range=(0, 1), y_range=(0, 1))
w = ColorPicker(title="Line Color", color="red", height=20, width=100)
line = p.line(x='x', y='y', source=cds, color=w.color)
cb = CustomJS(args={'line': line},
              code="""
line.glyph.line_color = cb_obj.color
""")
w.js_on_change('color', cb)

show(row([widgetbox(w, width=100), p]))
Esempio n. 19
0
from typing import Optional, Any
import numpy as np
from bokeh.plotting import figure, curdoc
from bokeh.layouts import column
from bokeh.models import TextInput, ColorPicker, Text

# set a stage and general properties
p = figure(plot_width=400, plot_height=800, tools='save')
linewidth = 3.5  # warp and weft properties
a = 0  # top position warpA
b = 1  # top left position warpB
b2 = -1  # top right position warpB
color_picker = ColorPicker(
    color="#f666f0",
    title="Choose a color and hit return to start weaving:",
    width=400)
black = "#000000"
warpdefault0 = -2  # warp position on y axis, low end
warpdefault1 = 60  # warp position on y axis, high end
Y0A = -1.5  # the number of lines already woven
Y1A = Y0A + 1.5  # pattern position
Y0B = -2.5  # pattern position
Y1B = Y0B + 1.5  # pattern position
weft1 = -2
weft2 = 118
n = 1  # n should be the number of times that weft y has changed
zen = 1
p.xgrid.grid_line_color = None
p.ygrid.grid_line_color = None
p.yaxis.major_label_text_color = None
p.xaxis.major_label_text_color = None
Esempio n. 20
0
from bokeh.io import output_file, show
from bokeh.models import ColorPicker

output_file("color_picker.html")

color_picker = ColorPicker(color="#ff4466", title="Choose color:", width=200)

show(color_picker)
Esempio n. 21
0
from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import ColorPicker
from bokeh.plotting import figure

plot = figure(x_range=(0, 1), y_range=(0, 1), width=350, height=350)
line = plot.line(x=(0, 1), y=(0, 1), color="black", line_width=4)

picker = ColorPicker(title="Line Color")
picker.js_link('color', line.glyph, 'line_color')

show(column(plot, picker))
Esempio n. 22
0
def widgets():
    from bokeh.io import show
    from bokeh.models import Select, CheckboxButtonGroup, Button, CheckboxGroup, ColorPicker, Dropdown, \
        FileInput, MultiSelect, RadioButtonGroup, RadioGroup, Slider, RangeSlider, TextAreaInput, TextInput, Toggle, \
        Paragraph, PreText, Div

    put_text('Button')
    button = Button(label="Foo", button_type="success")
    show(button)

    put_text('CheckboxButtonGroup')
    checkbox_button_group = CheckboxButtonGroup(
        labels=["Option 1", "Option 2", "Option 3"], active=[0, 1])
    show(checkbox_button_group)

    put_text('CheckboxGroup')
    checkbox_group = CheckboxGroup(labels=["Option 1", "Option 2", "Option 3"],
                                   active=[0, 1])
    show(checkbox_group)

    put_text('ColorPicker')
    color_picker = ColorPicker(color="#ff4466",
                               title="Choose color:",
                               width=200)
    show(color_picker)

    put_text('Dropdown')
    menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None,
            ("Item 3", "item_3")]
    dropdown = Dropdown(label="Dropdown button",
                        button_type="warning",
                        menu=menu)
    show(dropdown)

    put_text('FileInput')
    file_input = FileInput()
    show(file_input)

    put_text('MultiSelect')
    multi_select = MultiSelect(title="Option:",
                               value=["foo", "quux"],
                               options=[("foo", "Foo"), ("bar", "BAR"),
                                        ("baz", "bAz"), ("quux", "quux")])
    show(multi_select)

    put_text('RadioButtonGroup')
    radio_button_group = RadioButtonGroup(
        labels=["Option 1", "Option 2", "Option 3"], active=0)
    show(radio_button_group)

    put_text('RadioGroup')
    radio_group = RadioGroup(labels=["Option 1", "Option 2", "Option 3"],
                             active=0)
    show(radio_group)

    put_text('Select')
    select = Select(title="Option:",
                    value="foo",
                    options=["foo", "bar", "baz", "quux"])
    show(select)

    put_text('Slider')
    slider = Slider(start=0, end=10, value=1, step=.1, title="Stuff")
    show(slider)

    put_text('RangeSlider')
    range_slider = RangeSlider(start=0,
                               end=10,
                               value=(1, 9),
                               step=.1,
                               title="Stuff")
    show(range_slider)

    put_text('TextAreaInput')
    text_input = TextAreaInput(value="default", rows=6, title="Label:")
    show(text_input)

    put_text('TextInput')
    text_input = TextInput(value="default", title="Label:")
    show(text_input)

    put_text('Toggle')
    toggle = Toggle(label="Foo", button_type="success")
    show(toggle)

    put_text('Div')
    div = Div(
        text=
        """Your <a href="https://en.wikipedia.org/wiki/HTML">HTML</a>-supported text is initialized with the <b>text</b> argument.  The
    remaining div arguments are <b>width</b> and <b>height</b>. For this example, those values
    are <i>200</i> and <i>100</i> respectively.""",
        width=200,
        height=100)
    show(div)

    put_text('Paragraph')
    p = Paragraph(
        text="""Your text is initialized with the 'text' argument.  The
    remaining Paragraph arguments are 'width' and 'height'. For this example, those values
    are 200 and 100 respectively.""",
        width=200,
        height=100)
    show(p)

    put_text('PreText')
    pre = PreText(text="""Your text is initialized with the 'text' argument.

    The remaining Paragraph arguments are 'width' and 'height'. For this example,
    those values are 500 and 100 respectively.""",
                  width=500,
                  height=100)
    show(pre)
Esempio n. 23
0
)
from bokeh.models.glyphs import VBar
vbar_selected = VBar(fill_alpha=0.2,
                     fill_color='blue',
                     line_color='blue',
                     hatch_pattern='right_diagonal_line',
                     hatch_color='blue',
                     hatch_alpha=1.0,
                     hatch_weight=0.5)
vbar_nonselected = VBar(fill_alpha=0.2, fill_color='blue', line_color='blue')
vbar_renderer.selection_glyph = vbar_selected
vbar_renderer.nonselection_glyph = vbar_nonselected

p2.xgrid.grid_line_color = None  # removes gridlines

picker = ColorPicker(
    title="Line Color")  # allows to change the color of the bars
picker.js_link(
    'color', vbar_renderer.selection_glyph,
    'fill_color')  # link the selected bar color properties to the selector
picker.js_link('color', vbar_renderer.selection_glyph, 'line_color')
picker.js_link('color', vbar_renderer.selection_glyph, 'hatch_color')
picker.js_link(
    'color', vbar_renderer.nonselection_glyph,
    'fill_color')  # link the non-selected bar color properties to the selector
picker.js_link('color', vbar_renderer.nonselection_glyph, 'line_color')
picker.js_link(
    'color', vbar_renderer.glyph, 'fill_color'
)  # link the bar color properties to the selector for when no bar has been selected
picker.js_link('color', vbar_renderer.glyph, 'line_color')

# hover tool p2
from bokeh.io import show
from bokeh.models import ColumnDataSource, CustomJS, ColorPicker
from bokeh.plotting import Figure
from bokeh.layouts import row, widgetbox
cds = ColumnDataSource(data=dict(x=(0, 1), y=(0, 1)))

p = Figure(x_range=(0, 1), y_range=(0, 1))
w = ColorPicker(title="Line Color", color="red", height=20, width=100)
line = p.line(x='x', y='y', source=cds, color=w.color)
cb = CustomJS(args={'line': line}, code="""
line.glyph.line_color = cb_obj.color
""")
w.js_on_change('color', cb)

show(row([widgetbox(w, width=100), p]))