График Python Bokeh отображает две линии при вызове функции обновления

Я работал с функцией python bokeh, и я хочу отображать график акций, когда тикер вводится в раздел TextInput. Однако в моем случае единственный способ, которым я проделал эту работу, - это создать новую строку p.line в функции обновления, которая накладывает один график акций поверх другого. Есть ли способ обновить мои исходные данные или функцию обновления, чтобы отображался график только с исходными запасами?

p=figure(
    height=400,
    x_axis_type='datetime',
    title=(company+' ('+tickerstring+') '),
    tools='pan, box_zoom, wheel_zoom, reset',
)


p.line('x', 'y', source=source)
line1=p.line(thedates, stockcloseprices)

p.grid.grid_line_color="white"
p.xaxis.axis_label = 'Date'
p.yaxis.axis_label = 'Price'
p.add_tools(HoverTool(
    tooltips=[
        ("Date", "@x{%F}"),
        ('Close',"@y")
    ],
    formatters={
        'x':'datetime', # use 'datetime' formatter for 'date' field
    },
    mode='vline'
))


source = ColumnDataSource(data=dict(
        x=thedates,
        y=stockcloseprices
        ))


div = Div(text='<br><b> Key Points </b><br><br>'+percentagechange+'<br><br>'+performance,
width=200, height=100)


def update(f):
    fstocksymbol=str(f.upper())
    if fstocksymbol in stocksymbols:
        p.title.text = (symbolsdictionary[fstocksymbol]).upper()+' ('+fstocksymbol+')'
        tickerstring=fstocksymbol
        firstfunction=stockname(tickerstring)
        secondfunction=stockdata(firstfunction)
        stockdates=[]
        stockcloseprices=[]
        for value in secondfunction:
            stockdates.append(value[0])
            stockcloseprices.append(value[4])
        thedates = np.array(stockdates, dtype=np.datetime64)
        p.line(thedates, stockcloseprices)
        push_notebook()
    elif fstocksymbol=='':
        print('')
    else:
        print("")

interact(update, f='')



grid = gridplot([p, div, button], ncols=2, plot_width=570, plot_height=400)
show(grid, notebook_handle=True)

person Allen Wu    schedule 06.08.2018    source источник


Ответы (1)


Есть несколько примеров записных книжек, которые показывают, как обновить источник данных для существующего глифа в каталоге примеров на GitHub:

https://github.com/bokeh/bokeh/tree/master/examples/howto/notebook_comms

Короче говоря, вы хотите обновить источник данных:

source.data = new_data_dict
push_notebook()
person bigreddot    schedule 06.08.2018