tools¶
Bokeh comes with a number of interactive tools.
There are five types of tool interactions:
|
|
|
|
|
For the first three comprise the category of gesture tools, and only one tool for each gesture can be active at any given time. The active tool is indicated on the toolbar by a highlight next to the tool. Actions are immediate or modal operations that are only activated when their button in the toolbar is pressed. Inspectors are passive tools that merely report information or annotate the plot in some way, and may always be active regardless of what other tools are currently active.
- Action¶
alias of
bokeh.models.tools.ActionTool
ActionTool¶
- class ActionTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.Tool
A base class for tools that are buttons in the toolbar.
Note
This is an abstract base class used to help organize the hierarchy of Bokeh model types. It is not useful to instantiate on its own.
JSON Prototype
{ "description": null, "id": "19613", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(**kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(**kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(**kwargs)Inherited from
PropertyCallbackManager
__init__
(**kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(**kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
BoxEditTool¶
- class BoxEditTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.EditTool
,bokeh.models.tools.Drag
,bokeh.models.tools.Tap
Allows drawing, dragging and deleting
Rect
glyphs on one or more renderers by editing the underlyingColumnDataSource
data. Like other drawing tools, the renderers that are to be edited must be supplied explicitly as a list. When drawing a new box the data will always be added to theColumnDataSource
on the first supplied renderer.The tool will modify the columns on the data source corresponding to the
x
,y
,width
andheight
values of the glyph. Any additional columns in the data source will be padded withempty_value
, when adding a new box.The supported actions include:
Add box: Hold shift then click and drag anywhere on the plot or double tap once to start drawing, move the mouse and double tap again to finish drawing.
Move box: Click and drag an existing box, the box will be dropped once you let go of the mouse button.
Delete box: Tap a box to select it then press <<backspace>> key while the mouse is within the plot area.
To Move or Delete multiple boxes at once:
Move selection: Select box(es) with <<shift>>+tap (or another selection tool) then drag anywhere on the plot. Selecting and then dragging on a specific box will move both.
Delete selection: Select box(es) with <<shift>>+tap (or another selection tool) then press <<backspace>> while the mouse is within the plot area.
JSON Prototype
{ "custom_icon": null, "description": null, "dimensions": "both", "id": "19618", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "num_objects": 0, "renderers": [], "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
Which dimensions the box drawing is to be free in.
Defines a limit on the number of boxes that can be drawn.
Inherited from
EditTool
custom_tooltip
Defines the value to insert on non-coordinate columns when a new glyph is inserted into the
ColumnDataSource
columns, e.g.An icon to display in the toolbar.
An explicit list of renderers corresponding to scatter glyphs that may be edited.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
EditTool
__init__
(*args, **kwargs)Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(*args, **kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(*args, **kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(*args, **kwargs)Inherited from
PropertyCallbackManager
__init__
(*args, **kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(*args, **kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- custom_icon = None¶
-
An icon to display in the toolbar.
The icon can provided as a string filename for an image, a PIL
Image
object, or an RGB(A) NumPy array.
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- dimensions = 'both'¶
- Type
Which dimensions the box drawing is to be free in. By default, users may freely draw boxes with any dimensions. If only “width” is set, the box will be constrained to span the entire vertical space of the plot, only the horizontal dimension can be controlled. If only “height” is set, the box will be constrained to span the entire horizontal space of the plot, and the vertical dimension can be controlled.
- empty_value = Undefined¶
-
Defines the value to insert on non-coordinate columns when a new glyph is inserted into the
ColumnDataSource
columns, e.g. when a circle glyph defines ‘x’, ‘y’ and ‘color’ columns, adding a new point will add the x and y-coordinates to ‘x’ and ‘y’ columns and the color column will be filled with the defined empty value.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- num_objects = 0¶
- Type
Defines a limit on the number of boxes that can be drawn. By default there is no limit on the number of objects, but if enabled the oldest drawn box will be dropped to make space for the new box being added.
- renderers = []¶
- Type
An explicit list of renderers corresponding to scatter glyphs that may be edited.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
BoxSelectTool¶
- class BoxSelectTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.Drag
,bokeh.models.tools.SelectTool
The box selection tool allows users to make selections on a Plot by showing a rectangular region by dragging the mouse or a finger over the plot area. The end of the drag event indicates the selection region is ready.
See Selected and unselected glyphs for information on styling selected and unselected glyphs.
JSON Prototype
{ "description": null, "dimensions": "both", "id": "19628", "js_event_callbacks": {}, "js_property_callbacks": {}, "mode": "replace", "name": null, "names": [], "origin": "corner", "overlay": { "id": "19629" }, "renderers": "auto", "select_every_mousemove": false, "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
Whether a selection computation should happen on every mouse event, or only once, when the selection region is completed.
Which dimensions the box selection is to be free in.
A shaded annotation drawn to indicate the selection region.
Indicates whether the rectangular selection area should originate from a corner (top-left or bottom-right depending on direction) or the center of the box.
Inherited from
SelectTool
A list of names to query for.
An explicit list of renderers to hit test against.
Defines what should happen when a new selection is made.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(**kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(**kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(**kwargs)Inherited from
PropertyCallbackManager
__init__
(**kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(**kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- dimensions = 'both'¶
- Type
Which dimensions the box selection is to be free in. By default, users may freely draw selections boxes with any dimensions. If only “width” is set, the box will be constrained to span the entire vertical space of the plot, only the horizontal dimension can be controlled. If only “height” is set, the box will be constrained to span the entire horizontal space of the plot, and the vertical dimension can be controlled.
- mode = 'replace'¶
- Type
Defines what should happen when a new selection is made. The default is to replace the existing selection. Other options are to append to the selection, intersect with it or subtract from it.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- names = []¶
- Type
A list of names to query for. If set, only renderers that have a matching value for their
name
attribute will be used.
- origin = 'corner'¶
- Type
Enum
(Enumeration(corner, center))
Indicates whether the rectangular selection area should originate from a corner (top-left or bottom-right depending on direction) or the center of the box.
- overlay = BoxAnnotation(id='19637', ...)¶
- Type
A shaded annotation drawn to indicate the selection region.
- renderers = 'auto'¶
-
An explicit list of renderers to hit test against. If unset, defaults to all renderers on a plot.
- select_every_mousemove = False¶
- Type
Whether a selection computation should happen on every mouse event, or only once, when the selection region is completed. Default: False
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
BoxZoomTool¶
- class BoxZoomTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.Drag
The box zoom tool allows users to define a rectangular egion of a Plot to zoom to by dragging he mouse or a finger over the plot region. The end of the drag event indicates the selection region is ready.
Note
BoxZoomTool
is incompatible withGMapPlot
due to the manner in which Google Maps exert explicit control over aspect ratios. Adding this tool to aGMapPlot
will have no effect.JSON Prototype
{ "description": null, "dimensions": "both", "id": "19642", "js_event_callbacks": {}, "js_property_callbacks": {}, "match_aspect": false, "name": null, "origin": "corner", "overlay": { "id": "19643" }, "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
Which dimensions the zoom box is to be free in.
A shaded annotation drawn to indicate the selection region.
Whether the box zoom region should be restricted to have the same aspect ratio as the plot region.
Indicates whether the rectangular zoom area should originate from a corner (top-left or bottom-right depending on direction) or the center of the box.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(**kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(**kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(**kwargs)Inherited from
PropertyCallbackManager
__init__
(**kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(**kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- dimensions = 'both'¶
- Type
Which dimensions the zoom box is to be free in. By default, users may freely draw zoom boxes with any dimensions. If only “width” is supplied, the box will be constrained to span the entire vertical space of the plot, only the horizontal dimension can be controlled. If only “height” is supplied, the box will be constrained to span the entire horizontal space of the plot, and the vertical dimension can be controlled.
- match_aspect = False¶
- Type
Whether the box zoom region should be restricted to have the same aspect ratio as the plot region.
Note
If the tool is restricted to one dimension, this value has no effect.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- origin = 'corner'¶
- Type
Enum
(Enumeration(corner, center))
Indicates whether the rectangular zoom area should originate from a corner (top-left or bottom-right depending on direction) or the center of the box.
- overlay = BoxAnnotation(id='19650', ...)¶
- Type
A shaded annotation drawn to indicate the selection region.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
CrosshairTool¶
- class CrosshairTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.InspectTool
The crosshair tool is a passive inspector tool. It is generally on at all times, but can be configured in the inspector’s menu associated with the toolbar icon shown above.
The crosshair tool draws a crosshair annotation over the plot, centered on the current mouse position. The crosshair tool may be configured to draw across only one dimension by setting the
dimension
property to onlywidth
orheight
.JSON Prototype
{ "description": null, "dimensions": "both", "id": "19653", "js_event_callbacks": {}, "js_property_callbacks": {}, "line_alpha": 1.0, "line_color": "black", "line_width": 1, "name": null, "subscribed_events": [], "syncable": true, "tags": [], "toggleable": true }
Public Data Attributes:
Which dimensions the crosshair tool is to track.
A color to use to stroke paths with.
An alpha value to use to stroke paths with.
Stroke width in units of pixels.
Inherited from
InspectTool
Whether an on/off toggle button should appear in the toolbar for this inspection tool.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(**kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(**kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(**kwargs)Inherited from
PropertyCallbackManager
__init__
(**kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(**kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- dimensions = 'both'¶
- Type
Which dimensions the crosshair tool is to track. By default, both vertical and horizontal lines will be drawn. If only “width” is supplied, only a horizontal line will be drawn. If only “height” is supplied, only a vertical line will be drawn.
- line_alpha = 1.0¶
- Type
An alpha value to use to stroke paths with.
Acceptable values are floating-point numbers between 0 and 1 (0 being transparent and 1 being opaque).
- line_color = 'black'¶
- Type
A color to use to stroke paths with.
Acceptable values are:
any of the named CSS colors, e.g
'green'
,'indigo'
RGB(A) hex strings, e.g.,
'#FF0000'
,'#44444444'
CSS4 color strings, e.g.,
'rgba(255, 0, 127, 0.6)'
,'rgb(0 127 0 / 1.0)'
, or'hsl(60deg 100% 50% / 1.0)'
a 3-tuple of integers (r, g, b) between 0 and 255
a 4-tuple of (r, g, b, a) where r, g, b are integers between 0 and 255, and a is between 0 and 1
a 32-bit unsigned integer using the 0xRRGGBBAA byte order pattern
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- toggleable = True¶
- Type
Whether an on/off toggle button should appear in the toolbar for this inspection tool. If
False
, the viewers of a plot will not be able to toggle the inspector on or off using the toolbar.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
CustomAction¶
- class CustomAction(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.ActionTool
Execute a custom action, e.g.
CustomJS
callback when a toolbar icon is activated.Example
tool = CustomAction(icon="icon.png", callback=CustomJS(code='alert("foo")')) plot.add_tools(tool)
JSON Prototype
{ "callback": null, "description": "Perform a Custom Action", "id": "19663", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
action_tooltip
A Bokeh callback to execute when the custom action icon is activated.
An icon to display in the toolbar.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
__init__
(*args, **kwargs)Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(*args, **kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(*args, **kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(*args, **kwargs)Inherited from
PropertyCallbackManager
__init__
(*args, **kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(*args, **kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- callback = None¶
-
A Bokeh callback to execute when the custom action icon is activated.
- description = 'Perform a Custom Action'¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- icon = Undefined¶
- Type
An icon to display in the toolbar.
The icon can provided as a string filename for an image, a PIL
Image
object, or an RGB(A) NumPy array.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
CustomJSHover¶
- class CustomJSHover(*args, **kwargs)[source]¶
Bases:
bokeh.model.model.Model
Define a custom formatter to apply to a hover tool field.
This model can be configured with JavaScript code to format hover tooltips. The JavaScript code has access to the current value to format, some special variables, and any format configured on the tooltip. The variable
value
will contain the untransformed value. The variablespecial_vars
will provide a dict with the following contents:x
data-space x-coordinate of the mousey
data-space y-coordinate of the mousesx
screen-space x-coordinate of the mousesy
screen-space y-coordinate of the mousedata_x
data-space x-coordinate of the hovered glyphdata_y
data-space y-coordinate of the hovered glyphindices
column indices of all currently hovered glyphsname
value of thename
property of the hovered glyph renderer
If the hover is over a “multi” glyph such as
Patches
orMultiLine
then asegment_index
key will also be present.Finally, the value of the format passed in the tooltip specification is available as the
format
variable.Example
As an example, the following code adds a custom formatter to format WebMercator northing coordinates (in meters) as a latitude:
lat_custom = CustomJSHover(code=""" const projections = Bokeh.require("core/util/projections"); const x = special_vars.x const y = special_vars.y const coords = projections.wgs84_mercator.invert(x, y) return "" + coords[1] """) p.add_tools(HoverTool( tooltips=[( 'lat','@y{custom}' )], formatters={'@y':lat_custom} ))
Warning
The explicit purpose of this Bokeh Model is to embed raw JavaScript code for a browser to execute. If any part of the code is derived from untrusted user inputs, then you must take appropriate care to sanitize the user input prior to passing to Bokeh.
JSON Prototype
{ "args": {}, "code": "", "id": "19670", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
A mapping of names to Bokeh plot objects.
A snippet of JavaScript code to transform a single value.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(**kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(**kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(**kwargs)Inherited from
PropertyCallbackManager
__init__
(**kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(**kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- args = {}¶
-
A mapping of names to Bokeh plot objects. These objects are made available to the callback code snippet as the values of named parameters to the callback.
- code = ''¶
- Type
A snippet of JavaScript code to transform a single value. The variable
value
will contain the untransformed value and can be expected to be present in the function namespace at render time. Additionally, the variablespecial_vars
will be available, and will provide a dict with the following contents:x
data-space x-coordinate of the mousey
data-space y-coordinate of the mousesx
screen-space x-coordinate of the mousesy
screen-space y-coordinate of the mousedata_x
data-space x-coordinate of the hovered glyphdata_y
data-space y-coordinate of the hovered glyphindices
column indices of all currently hovered glyphs
If the hover is over a “multi” glyph such as
Patches
orMultiLine
then asegment_index
key will also be present.Finally, the value of the format passed in the tooltip specification is available as the
format
variable.The snippet will be made into the body of a function and therefore requires a return statement.
Example:
code = ''' return value + " total" '''
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
Drag¶
- class Drag(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.GestureTool
A base class for tools that respond to drag events.
Note
This is an abstract base class used to help organize the hierarchy of Bokeh model types. It is not useful to instantiate on its own.
JSON Prototype
{ "description": null, "id": "19676", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(**kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(**kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(**kwargs)Inherited from
PropertyCallbackManager
__init__
(**kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(**kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
EditTool¶
- class EditTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.GestureTool
A base class for all interactive draw tool types.
Note
This is an abstract base class used to help organize the hierarchy of Bokeh model types. It is not useful to instantiate on its own.
JSON Prototype
{ "custom_icon": null, "description": null, "id": "19681", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "renderers": [], "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
custom_tooltip
Defines the value to insert on non-coordinate columns when a new glyph is inserted into the
ColumnDataSource
columns, e.g.An icon to display in the toolbar.
An explicit list of renderers corresponding to scatter glyphs that may be edited.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
__init__
(*args, **kwargs)Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(*args, **kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(*args, **kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(*args, **kwargs)Inherited from
PropertyCallbackManager
__init__
(*args, **kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(*args, **kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- custom_icon = None¶
-
An icon to display in the toolbar.
The icon can provided as a string filename for an image, a PIL
Image
object, or an RGB(A) NumPy array.
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- empty_value = Undefined¶
-
Defines the value to insert on non-coordinate columns when a new glyph is inserted into the
ColumnDataSource
columns, e.g. when a circle glyph defines ‘x’, ‘y’ and ‘color’ columns, adding a new point will add the x and y-coordinates to ‘x’ and ‘y’ columns and the color column will be filled with the defined empty value.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- renderers = []¶
- Type
An explicit list of renderers corresponding to scatter glyphs that may be edited.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old: Unknown, new: Unknown, hint: DocumentPatchedEvent | None = None, setter: Setter | None = None) None ¶
- update(**kwargs: Any) None ¶
Updates the object’s properties from the given keyword arguments.
- Returns
None
Examples
The following are equivalent:
from bokeh.models import Range1d r = Range1d # set properties individually: r.start = 10 r.end = 20 # update properties together: r.update(start=10, end=20)
- update_from_json(json_attributes: Dict[str, JSON], *, models: Mapping[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Updates the object’s properties from a JSON attributes dictionary.
- Parameters
json_attributes – (JSON-dict) : attributes and values to update
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- property struct: bokeh.core.types.ReferenceJson¶
A Bokeh protocol “structure” of this model, i.e. a dict of the form:
{ 'type' : << view model name >> 'id' : << unique model id >> }
Additionally there may be a subtype field if this model is a subtype.
FreehandDrawTool¶
- class FreehandDrawTool(*args, **kwargs)[source]¶
Bases:
bokeh.models.tools.EditTool
,bokeh.models.tools.Drag
,bokeh.models.tools.Tap
Allows freehand drawing of
Patches
andMultiLine
glyphs. The glyph to draw may be defined via therenderers
property.The tool will modify the columns on the data source corresponding to the
xs
andys
values of the glyph. Any additional columns in the data source will be padded with the declaredempty_value
, when adding a new point.The supported actions include:
Draw vertices: Click and drag to draw a line
Delete patch/multi-line: Tap a patch/multi-line to select it then press <<backspace>> key while the mouse is within the plot area.
JSON Prototype
{ "custom_icon": null, "description": null, "id": "19689", "js_event_callbacks": {}, "js_property_callbacks": {}, "name": null, "num_objects": 0, "renderers": [], "subscribed_events": [], "syncable": true, "tags": [] }
Public Data Attributes:
Defines a limit on the number of patches or multi-lines that can be drawn.
Inherited from
EditTool
custom_tooltip
Defines the value to insert on non-coordinate columns when a new glyph is inserted into the
ColumnDataSource
columns, e.g.An icon to display in the toolbar.
An explicit list of renderers corresponding to scatter glyphs that may be edited.
Inherited from
Tool
A string describing the purpose of this tool.
Inherited from
Model
model_class_reverse_map
id
ref
A Bokeh protocol "structure" of this model, i.e. a dict of the form:.
An arbitrary, user-supplied name for this model.
An optional list of arbitrary, user-supplied values to attach to this model.
js_event_callbacks
A mapping of event names to lists of
CustomJS
callbacks.subscribed_events
List of events that are subscribed to by Python callbacks.
js_property_callbacks
A mapping of attribute names to lists of
CustomJS
callbacks, to be set up on BokehJS side when the document is created.Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser.
Public Methods:
Inherited from
EditTool
__init__
(*args, **kwargs)Inherited from
Tool
from_string
(name)Takes a string and returns a corresponding Tool instance.
register_alias
(name, constructor)Inherited from
Model
__init_subclass__
()__new__
(cls, *args, **kwargs)__init__
(*args, **kwargs)__str__
()Return str(self).
__repr__
()Return repr(self).
destroy
()Clean up references to the document and property
js_on_event
(event, *callbacks)js_link
(attr, other, other_attr[, attr_selector])Link two Bokeh model properties using JavaScript.
js_on_change
(event, *callbacks)Attach a
CustomJS
callback to an arbitrary BokehJS model event.on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.Returns all
Models
that this object has references to.select
(selector)Query this object and all of its references for objects that match the given selector.
select_one
(selector)Query this object and all of its references for objects that match the given selector.
set_select
(selector, updates)Update objects that match a given selector with the specified attribute/value updates.
to_json
(include_defaults)Returns a dictionary of the attributes of this object, containing only "JSON types" (string, number, boolean, none, dict, list).
to_json_string
(include_defaults)Returns a JSON string encoding the attributes of this object.
trigger
(attr, old, new[, hint, setter])Inherited from
HasProps
__init__
(*args, **kwargs)__setattr__
(name, value)Intercept attribute setting on HasProps in order to special case a few situations:
__getattr__
(name)Intercept attribute setting on HasProps in order to special case a few situations:
__str__
()Return str(self).
__repr__
()Return repr(self).
equals
(other)Structural equality of models.
static_to_serializable
(serializer)to_serializable
(serializer)set_from_json
(name, json, *[, models, setter])Set a property value on this object from JSON.
update
(**kwargs)Updates the object's properties from the given keyword arguments.
update_from_json
(json_attributes, *[, ...])Updates the object's properties from a JSON attributes dictionary.
lookup
(name, *[, raises])Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.properties
(*[, _with_props])Collect the names of properties on this class.
Collect the names of all properties on this class that also have references.
Collect the names of all
DataSpec
properties on this class.properties_with_values
(*[, ...])Collect a dict mapping property names to their values.
query_properties_with_values
(query, *[, ...])Query the properties values of
HasProps
instances with a predicate.Get any theme-provided overrides.
apply_theme
(property_values)Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
Remove any themed values and restore defaults.
Inherited from
HasDocumentRef
__init__
(*args, **kwargs)Inherited from
PropertyCallbackManager
__init__
(*args, **kwargs)on_change
(attr, *callbacks)Add a callback on this object to trigger when
attr
changes.remove_on_change
(attr, *callbacks)Remove a callback from this object
trigger
(attr, old, new[, hint, setter])Inherited from
EventCallbackManager
__init__
(*args, **kwargs)on_event
(event, *callbacks)Run callbacks when the specified event occurs on this Model
- custom_icon = None¶
-
An icon to display in the toolbar.
The icon can provided as a string filename for an image, a PIL
Image
object, or an RGB(A) NumPy array.
- description = None¶
-
A string describing the purpose of this tool. If not defined, an auto-generated description will be used. This description will be typically presented in the user interface as a tooltip.
- empty_value = Undefined¶
-
Defines the value to insert on non-coordinate columns when a new glyph is inserted into the
ColumnDataSource
columns, e.g. when a circle glyph defines ‘x’, ‘y’ and ‘color’ columns, adding a new point will add the x and y-coordinates to ‘x’ and ‘y’ columns and the color column will be filled with the defined empty value.
- name = None¶
-
An arbitrary, user-supplied name for this model.
This name can be useful when querying the document to retrieve specific Bokeh models.
>>> plot.circle([1,2,3], [4,5,6], name="temp") >>> plot.select(name="temp") [GlyphRenderer(id='399d53f5-73e9-44d9-9527-544b761c7705', ...)]
Note
No uniqueness guarantees or other conditions are enforced on any names that are provided, nor is the name used directly by Bokeh for any reason.
- num_objects = 0¶
- Type
Defines a limit on the number of patches or multi-lines that can be drawn. By default there is no limit on the number of objects, but if enabled the oldest drawn patch or multi-line will be overwritten when the limit is reached.
- renderers = []¶
- Type
An explicit list of renderers corresponding to scatter glyphs that may be edited.
- syncable = True¶
- Type
Indicates whether this model should be synchronized back to a Bokeh server when updated in a web browser. Setting to
False
may be useful to reduce network traffic when dealing with frequently updated objects whose updated values we don’t need.Note
Setting this property to
False
will prevent anyon_change()
callbacks on this object from triggering. However, any JS-side callbacks will still work.
- tags = []¶
- Type
An optional list of arbitrary, user-supplied values to attach to this model.
This data can be useful when querying the document to retrieve specific Bokeh models:
>>> r = plot.circle([1,2,3], [4,5,6]) >>> r.tags = ["foo", 10] >>> plot.select(tags=['foo', 10]) [GlyphRenderer(id='1de4c3df-a83d-480a-899b-fb263d3d5dd9', ...)]
Or simply a convenient way to attach any necessary metadata to a model that can be accessed by
CustomJS
callbacks, etc.Note
No uniqueness guarantees or other conditions are enforced on any tags that are provided, nor are the tags used directly by Bokeh for any reason.
- apply_theme(property_values: Dict[str, Any]) None ¶
Apply a set of theme values which will be used rather than defaults, but will not override application-set values.
The passed-in dictionary may be kept around as-is and shared with other instances to save memory (so neither the caller nor the
HasProps
instance should modify it).- Parameters
property_values (dict) – theme values to use in place of defaults
- Returns
None
- classmethod dataspecs() Dict[str, DataSpec] ¶
Collect the names of all
DataSpec
properties on this class.This method always traverses the class hierarchy and includes properties defined on any parent classes.
- equals(other: bokeh.core.has_props.HasProps) bool ¶
Structural equality of models.
- Parameters
other (HasProps) – the other instance to compare to
- Returns
True, if properties are structurally equal, otherwise False
- js_link(attr: str, other: Model, other_attr: str, attr_selector: int | str | None = None) None ¶
Link two Bokeh model properties using JavaScript.
This is a convenience method that simplifies adding a CustomJS callback to update one Bokeh model property whenever another changes value.
- Parameters
Added in version 1.1
- Raises
Examples
This code with
js_link
:select.js_link('value', plot, 'sizing_mode')
is equivalent to the following:
from bokeh.models import CustomJS select.js_on_change('value', CustomJS(args=dict(other=plot), code="other.sizing_mode = this.value" ) )
Additionally, to use attr_selector to attach the left side of a range slider to a plot’s x_range:
range_slider.js_link('value', plot.x_range, 'start', attr_selector=0)
which is equivalent to:
from bokeh.models import CustomJS range_slider.js_on_change('value', CustomJS(args=dict(other=plot.x_range), code="other.start = this.value[0]" ) )
- js_on_change(event: str, *callbacks: JSEventCallback) None ¶
Attach a
CustomJS
callback to an arbitrary BokehJS model event.On the BokehJS side, change events for model properties have the form
"change:property_name"
. As a convenience, if the event name passed to this method is also the name of a property on the model, then it will be prefixed with"change:"
automatically:# these two are equivalent source.js_on_change('data', callback) source.js_on_change('change:data', callback)
However, there are other kinds of events that can be useful to respond to, in addition to property change events. For example to run a callback whenever data is streamed to a
ColumnDataSource
, use the"stream"
event on the source:source.js_on_change('streaming', callback)
- classmethod lookup(name: str, *, raises: bool = True) PropertyDescriptor[Any] | None ¶
Find the
PropertyDescriptor
for a Bokeh property on a class, given the property name.- Parameters
- Returns
descriptor for property named
name
- Return type
- on_change(attr: str, *callbacks: PropertyCallback) None ¶
Add a callback on this object to trigger when
attr
changes.- Parameters
attr (str) – an attribute name on this object
*callbacks (callable) – callback functions to register
- Returns
None
Example:
widget.on_change('value', callback1, callback2, ..., callback_n)
- on_event(event: str | Type[Event], *callbacks: EventCallback) None ¶
Run callbacks when the specified event occurs on this Model
Not all Events are supported for all Models. See specific Events in bokeh.events for more information on which Models are able to trigger them.
- classmethod properties(*, _with_props: bool = False) Union[Set[str], Dict[str, Property[Any]]] ¶
Collect the names of properties on this class.
Warning
In a future version of Bokeh, this method will return a dictionary mapping property names to property objects. To future-proof this current usage of this method, wrap the return value in
list
.- Returns
property names
- classmethod properties_with_refs() Dict[str, Property[Any]] ¶
Collect the names of all properties on this class that also have references.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
- properties_with_values(*, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Collect a dict mapping property names to their values.
This method always traverses the class hierarchy and includes properties defined on any parent classes.
Non-serializable properties are skipped and property values are in “serialized” format which may be slightly different from the values you would normally read from the properties; the intent of this method is to return the information needed to losslessly reconstitute the object instance.
- query_properties_with_values(query: Callable[[bokeh.core.property.descriptors.PropertyDescriptor[Any]], bool], *, include_defaults: bool = True, include_undefined: bool = False) Dict[str, Any] ¶
Query the properties values of
HasProps
instances with a predicate.- Parameters
query (callable) – A callable that accepts property descriptors and returns True or False
include_defaults (bool, optional) – Whether to include properties that have not been explicitly set by a user (default: True)
- Returns
mapping of property names and values for matching properties
- Return type
- references() Set[bokeh.model.model.Model] ¶
Returns all
Models
that this object has references to.
- remove_on_change(attr: str, *callbacks: Callable[[str, Any, Any], None]) None ¶
Remove a callback from this object
- select(selector: SelectorType) Iterable[Model] ¶
Query this object and all of its references for objects that match the given selector.
- Parameters
selector (JSON-like) –
- Returns
seq[Model]
- select_one(selector: SelectorType) Model | None ¶
Query this object and all of its references for objects that match the given selector. Raises an error if more than one object is found. Returns single matching object, or None if nothing is found :param selector: :type selector: JSON-like
- Returns
Model
- set_from_json(name: str, json: JSON, *, models: Dict[ID, HasProps] | None = None, setter: Setter | None = None) None ¶
Set a property value on this object from JSON.
- Parameters
name – (str) : name of the attribute to set
json – (JSON-value) : value to set to the attribute to
models (dict or None, optional) –
Mapping of model ids to models (default: None)
This is needed in cases where the attributes to update also have values that have references.
setter (ClientSession or ServerSession or None, optional) –
This is used to prevent “boomerang” updates to Bokeh apps.
In the context of a Bokeh server application, incoming updates to properties will be annotated with the session that is doing the updating. This value is propagated through any subsequent change notifications that the update triggers. The session can compare the event setter to itself, and suppress any updates that originate from itself.
- Returns
None
- set_select(selector: Type[Model] | SelectorType, updates: Dict[str, Unknown]) None ¶
Update objects that match a given selector with the specified attribute/value updates.
- Parameters
selector (JSON-like) –
updates (dict) –
- Returns
None
- themed_values() Dict[str, Unknown] | None ¶
Get any theme-provided overrides.
Results are returned as a dict from property name to value, or
None
if no theme overrides any values for this instance.- Returns
dict or None
- to_json(include_defaults: bool) JSON ¶
Returns a dictionary of the attributes of this object, containing only “JSON types” (string, number, boolean, none, dict, list).
References to other objects are serialized as “refs” (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- to_json_string(include_defaults: bool) str ¶
Returns a JSON string encoding the attributes of this object.
References to other objects are serialized as references (just the object ID and type info), so the deserializer will need to separately have the full attributes of those other objects.
There’s no corresponding
from_json_string()
because to deserialize an object is normally done in the context of a Document (since the Document can resolve references).For most purposes it’s best to serialize and deserialize entire documents.
- Parameters
include_defaults (bool) – whether to include attributes that haven’t been changed from the default
- trigger(attr: str, old<