散景,选择激活多个数据集进行绘图

问题描述 投票:1回答:1

我不熟悉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),以便将它们绘制在同一图中,以便于比较。但是,我不知道该如何处理。

python plot bokeh
1个回答
0
投票

(在过道中的可能的)清理47434701。看起来Bokeh具有MultiSelect方法,在这种情况下可能有用。我想它在最初的提问时间不可用。

© www.soinside.com 2019 - 2024. All rights reserved.