我最近发现,新的bokeh为堆积条形图实现了更详细的悬停选项。头晕,我马上更新了bokeh,并将其合并到嵌套的堆叠vbar中。不过,在我不知道的情况下,我在上一版本中实现的一个不相关的回调不再工作,我不知道如何修复它。
我有一个数据表,它的行有几列数字。选择行将对每个选定行的列求和,并将其显示在
Label
. 此方面在0.13.0中不再有效。请参阅下面的简化娱乐:
Dataframe(df):
NAME | Sales | Returns | YEAR
John 33 3 2018
Mike 12 3 2018
Jim 19 9 2018
Tim 3 1 2017
Tom 20 0 2017
import pandas as pd
from bokeh.models import (ColumnDataSource, LabelSet, TapTool, OpenURL,CustomJS, NumberFormatter,
TableColumn, DataTable, Slider, CDSView,HoverTool,PreText, BoxSelectTool,
Label, Text, Button)
from bokeh.plotting import figure
from bokeh.io import curdoc
from bokeh.layouts import layout, column
from datetime import date
from bokeh.core.properties import expr
from bokeh.palettes import Spectral10
source=ColumnDataSource(data=df)
columns=[TableColumn(field="NAME", title="NAME"),
TableColumn(field="Sales", title= "Sales"),
TableColumn(field="Returns",title="Returns")]
data_table=DataTable(source=source, columns=columns)
def statsline(attr,old,new):
selection=source.selected.indices
if selection:
sales=sum(source.data['Sales'][selection])
returns=sum(source.data['Returns'][selection])
income.text="SELECTION | Sales: " + str(sales) + " | Returns: " + str(returns)
p_stat=figure(plot_width=1400, plot_height=60, toolbar_location=None)
income=Label(x_units='screen',y_units='screen',x=90, y=5,
text="Sales: " + str(df["Sales"][df["YEAR"]==date.today().year].sum()) +" |
Returns: " +str(df["Returns"][df["YEAR"]==date.today().year].sum()),
text_font_size='20pt')
p_stat.add_layout(income)
source.on_change('selected', statsline)
layout=layout([p_stat],[data_table])
curdoc().add_root(layout)
提前谢谢。
还有,有没有一种不那么老套的方法来显示bokeh中的kpi?我没什么主意了。