私はPythonとPandasについては熟練していますが、Bokehパッケージでは非常に新しいので、ここ数日間はこの作業を進めずにこの作業に苦労しています。データを表示するためのダッシュボードを構築しています。ラジオボタンを使用して、同じプロット上の異なる線を選択/表示すると非常に便利です。私はここからの例(https://github.com/bokeh/bokeh/issues/3715)に従っています。これはチェックボックスを使ってうまく動作するようになっています。私は21行目の "CheckboxGroup"を "RadioGroup"に変更し、 "active"引数を変更しました。その結果、ラジオボタンの選択を変更しても戻ってこないと、両方のプロットされた線が消えてしまいます。 CheckboxGroupがどのように機能し、RadioGroupがそうではないかを考慮して、コールバックに「アクティブ」イベントを使用する理由を理解できません。誰かが私の間違いを指摘してもらえますか?Python Bokeh CustomJS RadioGroup
import numpy as np
from bokeh.io import show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import CheckboxGroup, RadioGroup
from bokeh.models import CustomJS, ColumnDataSource
from bokeh.layouts import column, row
from bokeh.plotting import figure
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(3*np.pi*t)
c = np.cos(3*np.pi*t)
source = ColumnDataSource(data=dict(t=t, s=s, c=c))
plot = figure(plot_width=400, plot_height=400)
a = plot.line('t', 's', source=source, line_width=3, line_alpha=0.6,
line_color='blue')
b = plot.line('t', 'c', source=source, line_width=3, line_alpha=0.6,
line_color='red')
checkbox = RadioGroup(labels=["Cosinus", "Sinus"], active=0)
checkbox.callback = CustomJS(args=dict(line0=a, line1=b), code="""
//console.log(cb_obj.active);
line0.visible = false;
line1.visible = false;
for (i in cb_obj.active) {
//console.log(cb_obj.active[i]);
if (cb_obj.active[i] == 0) {
line0.visible = true;
} else if (cb_obj.active[i] == 1) {
line1.visible = true;
}
}
""")
layout = row(plot, widgetbox(checkbox))
show(layout)
これはまさに私が探していたものです、今の魅力のように動作します:) – kingfischer