Как обновить график данных в приложении Bokeh - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть фрейм данных Pandas с индексом TimeSeries.Идея состоит в том, чтобы использовать сервер bokeh, чтобы иметь DateSlider.Это означает, что значения, которые я передаю через функцию, являются датами.Тем не менее, я думаю, что моя проблема в том, что данные не обновляются, когда я запускаю сервер bokeh.Ползунок появляется, но данные не обновляются при перемещении курсора от ползунка.Я хотел бы иметь ваше мнение.Это мой код:

#The file was already imported and cleaned as DF: trt_file 

day_one  = str(min(trt_file.index)) #Checking point file
day_last = str(max(trt_file.index)) #Checking point file

# Creating the data source which will be selected from the whole file

source = ColumnDataSource(data={
    "x"            : trt_file.loc[day_one]["Depth [m]"],
    "y"            : trt_file.loc[day_one]["Temperature"],
    "Temperature"  : trt_file.loc[day_one]["Temperature"],
    "Depth"        : trt_file.loc[day_one]["Depth [m]"]
})

#Minimum values for axis generation
xmin, xmax = min(trt_file["Depth [m]"]), max(trt_file["Depth [m]"])
ymin, ymax = min(trt_file["Temperature"]), max(trt_file["Temperature"])

#Set the figure fopr the initial draw
p = figure(title="2018-07-09", x_axis_label="Depth [m]", y_axis_label="Temperature", plot_height=300, plot_width=1500, x_range=(xmin, xmax), y_range=(ymin, ymax),tools=[HoverTool(tooltips=[("Temperature", "@Temperature"), ("Depth [m]", "@Depth")])]  )

#Draw the values from the source we defined first
p.circle(x="x", y="y", fill_alpha=0.5, source=source)

#Set the axis names
p.xaxis.axis_label = "Kable lenght [m]"
p.yaxis.axis_label = "Temperature [C]"

#Creating the DateTime for the Slider
day_one_dt = (min(trt_file.index)) #Checking point file
day_last_dt = (max(trt_file.index))

#Slider
slider = DateSlider(start=day_one, end=day_last, value=day_one, step=1, title="TRT Day")

#Creating the bokeh interactive figure
def update_plot(attr, old, new): #attribute to change, old_val, new_val
    #set day for the slider value
    day_start = (str(slider.value)) #Value from the slider
    new_data = {
        "x"          : trt_file.iloc[day_start]["Depth [m]"],
        "y"          : trt_file.iloc[day_start]["Temperature"],
        "Temperature": trt_file.iloc[day_start]["Temperature"],
        "Depth"      : trt_file.iloc[day_start]["Depth [m]"]
    }
    source.trt_file = new_data
    p.title.text = "Day TRT"

slider.on_change("value", update_plot)
layout = row(widgetbox(slider), p)


curdoc().title = "Temp"
curdoc().add_root(layout)

1 Ответ

0 голосов
/ 24 февраля 2019

Bokeh вообще ничего не знает о «файле trt», поэтому установка source.trt_file - это не то, что Bokeh заметит или с чем-то сделает.Свойство, о котором Боке знает и на что реагирует: data:

source.data = new_data
...