我是使用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,...)。
该脚本基于此示例:drop_duplicates
,看起来像这样
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)来将它们绘制在同一个图中以便于比较。 但是,我不知道如何解决这个问题。