- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过在 Bokeh 中使用 customjs 回调,根据用户在上一个下拉菜单中所做的选择来更新下拉菜单。在下面的示例中,用户可以根据选择 common_name 或通过选择样方来创建基本图形。但我希望用户能够首先选择一个 common_name,然后根据可用于该 common_name 的数据(即基于首先选择的 common_name)选择一个样方。有什么想法吗?
from bokeh.models import CustomJS, ColumnDataSource, MultiSelect, Column
from bokeh.plotting import figure, show
from bokeh.layouts import row, column
import pandas as pd
# data
data = dict(common_name = ['A','A','B','C','B','B','A','C','C','B','A','B','C'],
length = [10, 20, 10, 20, 30, 20, 20, 30, 20, 30, 30, 20, 30],
weight = [100, 200, 100, 300, 100, 400, 100, 300, 100, 400, 500, 600, 450],
quadrat = ['N', 'N', 'N', 'N', 'M', 'M', 'M', 'M', 'O', 'O', 'M', 'N', 'O'])
data = pd.DataFrame(data)
data_source = ColumnDataSource(data)
# Empty source so the plot is empty before data is selected
source = ColumnDataSource(dict(length = [], weight = []))
plot = figure()
plot.circle(x = 'length', y = 'weight', source = source)
# Select species
available_species = list(set(data['common_name']))
available_species.sort()
species_callback = CustomJS(args = {'source': source, 'data_source': data_source},
code = """
var data = data_source.data;
var source_data = source.data;
var common_name = data['common_name'];
var selected_species = cb_obj.value;
var length_data = data['length'];
var weight_data = data['weight'];
var length = source_data['length'];
length.length = 0;
var weight = source_data['weight'];
weight.length = 0;
for (var i = 0; i < length_data.length; i++) {
if (selected_species.indexOf(common_name[i]) >= 0) {
length.push(length_data[i]);
weight.push(weight_data[i]);
}
}
source.change.emit();
""")
multiselect_species = MultiSelect(title = 'Species:', value = [], options = available_species, width = 240)
# Select quadrat
available_quadrat = list(set(data['quadrat']))
available_quadrat.sort()
quadrat_callback = CustomJS(args = {'source': source, 'data_source': data_source},
code = """
var data = data_source.data;
var source_data = source.data;
var quadrat = data['quadrat'];
var selected_quadrat = cb_obj.value;
var length_data = data['length'];
var weight_data = data['weight'];
var length = source_data['length'];
length.length = 0;
var weight = source_data['weight'];
weight.length = 0;
for (var i = 0; i < length_data.length; i++) {
if (selected_quadrat.indexOf(quadrat[i]) >= 0) {
length.push(length_data[i]);
weight.push(weight_data[i]);
}
}
source.change.emit();
""")
multiselect_quadrat = MultiSelect(title = 'Set:', value = [], options = available_quadrat, width = 240)
multiselect_quadrat.js_on_change('value', quadrat_callback)
multiselect_species.js_on_change('value', species_callback, CustomJS(args = dict(multiselect_quadrat = multiselect_quadrat,
available_quadrat = available_quadrat),
code="""
const available_quadrat = %s
multiselect_quadrat.options = "available_quadrat[cb_obj.value]"
""" % available_quadrat))
# Set up widgets layout
widgets_layout = column(multiselect_species, multiselect_quadrat)
page_layout = row(widgets_layout, plot)
show(page_layout)
最佳答案
这是一个完整的示例,它根据另一个小部件的 CustomJS
回调更新 MultiSelect
:
from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import RadioButtonGroup, CustomJS, MultiSelect
opts = {
0: ["foo", "bar"],
1: ["baz", "quux"],
}
bg = RadioButtonGroup(labels=["Stuff", "Things"], active=0)
ms = MultiSelect(options=opts[0])
bg.js_on_change('active', CustomJS(args=dict(ms=ms), code="""
const opts = %s
ms.options = opts[cb_obj.active]
""" % opts))
show(column(bg, ms)
关于javascript - 如何使用 customjs 在 Bokeh 中动态更新下拉菜单选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380172/
使用 Bokeh 1.4 和 Python 3.7。我有一组补丁,我想根据同一 ColumnDataSource 中的两个不同键(和标签)来改变颜色主题。我想坚持使用一个 ColumnDataSour
由于 BokehJS 相对较新,我正在努力寻找一个展示 CustomJS 与 BokehJS 配合使用的工作示例。我希望事情与在 python 中使用 CustomJS 有所不同,因为在使用 Cust
我有一个类似于下面的 pandas DataFrame import pandas as pd import numpy as np df = pd.DataFrame(columns=['item'
我对 Python 和 Pandas 相当有经验,但对 Bokeh 包非常陌生,并且在过去的几天里一直在努力完成这项任务,但没有取得任何进展。我正在构建一个仪表板来显示数据,使用单选按钮来选择/显示同
我有一个多列的数据框。前两列是 x 和 y 坐标,其余列是 (x,y) 对的不同属性值。 import pandas as pd import numpy as np df = pd.DataFram
我想根据当前鼠标位置更新我的绘图数据。 我的目标是类似 interactive power function plot 的东西, 但不是从 slider 中获取指数,而是将指数作为鼠标光标的当前 x
我使用 Bokeh 通过将 ColumnDataSource 传递给 figure.circle 函数来创建散点图。数据源有列为每个点指定特定颜色,每行有一个十六进制代码,因为我想使用的着色方案有些复
我想使用 CustomJS 将回调添加到我的 Bokeh 选择小部件。我需要根据选择小部件的回调来过滤我的数据帧。由于我是 JavaScript 编程新手,我无法编写回调代码 true_sou
我是 Bokeh 的新手,正在使用 CustomJS 来定义回调。我编写了一段代码来根据其他 slider 的值对 slider 进行更改。我现在想要更改当 slider 之一的值发生变化时显示的图像
我修改了this example .我最终想要的是一种获取图表中选择的数据点并在 python 代码中修改它们的方法。因此,我在这里添加了一个函数,它应该返回第二个图表的值(这就是按钮的用途)。但是,
我正在尝试通过在 Bokeh 中使用 customjs 回调,根据用户在上一个下拉菜单中所做的选择来更新下拉菜单。在下面的示例中,用户可以根据选择 common_name 或通过选择样方来创建基本图形
我在使用 Select 小部件和 CustomJS 尝试更新 Bokeh 源时遇到了一些麻烦。在这种情况下,CustomJS 是强制性要求,因此不能使用 def: 函数。下面的代码返回数据可视化,但它
我有一个简单的多列ColumnDataSource,每列代表模拟的不同日期,每行代表状态为a、b、c等的实体数量。我希望能够清理使用 slider 浏览日期(列)。 我查看了1 , 2和 Bokeh
Bokeh 的一个好处是可以从 Python 层指定回调,从而在不需要 bokeh-server 的情况下在 javascript 级别产生操作。因此,可以创建在浏览器中运行的交互式小部件,而无需运行
如何使用 Select 小部件更新我的 DataTable 小部件的值?这是我的示例代码: import pandas as pd from bokeh.io import show from bok
在 Bokeh 示例中 http://docs.bokeh.org/en/latest/docs/user_guide/interaction/callbacks.html#customjs-for-
我有一个 Bokeh 应用程序,它对各种小部件事件使用 Python 回调。对于某些事件,我想在对 Python 函数进行回调之前执行一些 JavaScript 代码。这可能吗? 在这种情况下,Pyt
我必须制作一个独立的 html 仪表板,所以我想弄清楚如何使用 CustomJS 向 Bokeh 下拉小部件添加回调。问题是,即使在查阅了有关该主题变体的其他帖子后,我仍然无法弄清楚。任何帮助,将不胜
问题应该出在回调函数上。不幸的是,我没有 JS 方面的经验。我从 dataframe-js 库中取出了这部分,但它不起作用。这个想法是有一个仪表板,其中包含 Rate1 和 Rate2 的两个图表以及
我正在开发一个使用 Bokeh 和 PubSub 以及其他 python 模块的 python 应用程序。我快完成了,而且运行得很好。但是当我尝试使用 PyInstaller 将其制作为可执行文件时,
我是一名优秀的程序员,十分优秀!