我是新来的。最近尝试实现一些小部件回调,很难在网上找到任何资源。在
场景:我有一个带有公司列表的multi-_-select-bokeh小部件。根据选择的公司,Vbar中的数据必须更改。为此,我尝试根据Multi-select中的值更改Vbar中使用的数据源。我无法得到想要的结果。有人能帮我解决这个问题吗。在
我不擅长CustomJs,因此在Bokeh服务器上进行调用。如果在CustomJs上也有解决方案,那将对我有很大帮助。在
非常感谢您提前抽出时间!在
下面是我使用的代码
source =source1[source1['year']== dt.now().year]
sourcex = source[source['month'] ==1 &
source['CompanyNo'].isin(['01','02','03','04','05','08']) ]
Overall= ColumnDataSource(source)
Curr= ColumnDataSource(sourcex)
boolinit = source['month']==1
view = CDSView(source=Overall, filters=[BooleanFilter(boolinit)])
hover3 = HoverTool(
tooltips = [
('day', '@day'),
('ExtendedPrice','@{ExtendedPrice}{0,0}'),
],
formatters = {
'day': 'datetime',
'ExtendedPrice': 'numeral'}
)
p = figure(
title='YEARLY SALES',
plot_width=600,
plot_height=400,
min_border=3,
tools = [hover3,'box_zoom','wheel_zoom', 'pan','reset'],
toolbar_location="above")
p.vbar(x='day', top='ExtendedPrice', width=0.2, color='#e8bc76',
source=Curr)
p.xaxis.axis_label = 'Day'
p.xaxis.axis_label_text_font_style = 'normal'
p.xaxis.axis_label_text_font_size = '12pt'
p.yaxis[0].formatter = NumeralTickFormatter(format="0,0")
def Multi_Selectupdate(attrname, old, new):
curr=sourcex[sourcex['CompanyNo'].isin(new)]
source.data=curr.data
companies=['All']+sourcex['CompanyNo'].unique().tolist()
multi_select = MultiSelect(title="Select:", value=['01'], options=companies,
height=200, width=100)
multi_select.on_change('value',Multi_Selectupdate )
layout = column(multi_select, p )
show(layout)
因为我没有数据,所以我使用以下脚本生成它。我假设您的数据有3列-
Date
,ExtendedPrice
,CompanyNo
。我首先生成了10K行的随机数据,然后在CompanyNo
、day
、month
、year
级别对其进行了总结。在现在,您要完成的是,给定一天和一组公司名称,您需要发布一个
ExtendedPrice
的某种聚合类型的柱状图,即假设公司“01”和“02”有2行(已选中),对于第2个月(也由滑块选择),这两个月的ExtendedPrice值为100,和200。如果我们想显示总数,你需要在条形图中显示300。这个总结,你需要动态计算。在有两种方法可以做到这一点。在
1。Bokeh回调
{cdg>你需要使用这个函数。请看下面的代码,一个原生python函数
^{pr2}$compsel
正在过滤pandas dataframe并对其进行汇总,然后用新创建的数据替换图表后端数据-还有其他选项可以托管此应用程序。在终端中输入
bokeh serve help
,查看其他选项2。JavaScript回调
这将生成一个javascript函数来与图表交互,它不需要bokeh服务器,直接在浏览器上工作。这将需要非常简单的javascript代码。在这里解决的示例中,我将
ExtendedPrice
总结为sum,但是代码将需要一些小的调整来计算其他统计信息,例如平均值。这里的js回调函数与bokeh回调函数的作用类似,它读取更大的数据集并根据select和slider值对其进行筛选-相关问题 更多 >
编程相关推荐