我不熟悉Bokeh。
我有大致类似的数据
date names numbers
2016 var1 62
2012 var2 82
2014 var1 118
2015 var2 69852
2012 var3 167
2016 var1 2266
2011 var1 88282
2015 var3 6307
...
我使用Bokeh脚本绘制数据,并从下拉菜单中选择要绘制数据的名称(var1,var2,...)。
脚本基于以下示例:https://github.com/bokeh/bokeh/tree/master/examples/app/weather,看起来像这样
import pandas as pd
from bokeh.io import curdoc
from bokeh.layouts import row, column
from bokeh.models import ColumnDataSource, Select
from bokeh.plotting import figure
def get_dataset(src, name):
df = src[src.names == name].copy()
del df['names']
df = df.set_index(['date'])
df.sort_index(inplace=True)
return ColumnDataSource(data=df)
def make_plot(source, title):
plot = figure(plot_width=800, tools="", toolbar_location=None)
plot.title.text = title
plot.line(x='date', y='numbers', source=source, legend="Record")
return plot
def update_plot(attrname, old, new):
ver = vselect.value
plot.title.text = "xxx"
src = get_dataset(df, ver)
source.date.update(src.date)
df = pd.read_csv('data/test_data.csv', delimiter='\t')
ver = 'aps'
cc = df['names'].unique()
vselect = Select(value=ver, title='VER', options=sorted((cc)))
source = get_dataset(df, ver)
plot = make_plot(source, "xxx")
vselect.on_change('value', update_plot)
controls = column(vselect)
curdoc().add_root(row(plot, controls))
这很好,但是我现在允许选择多个名称(例如var1和var2),以便将它们绘制在同一图中,以便于比较。但是,我不知道该如何处理。
(在过道中的可能的)清理47434701。看起来Bokeh具有MultiSelect方法,在这种情况下可能有用。我想它在最初的提问时间不可用。