Получение списка других столбцов в виде аннотаций при наведении на точку с помощью bokeh python - PullRequest
0 голосов
/ 01 июля 2019

BDVD - это мои Dataframe, а мои столбцы: Week, Score и Observation и Remarks. Я создал линейный график с неделей x_axis и оценкой y_axis с использованием Bokeh. Теперь, когда я наведу курсор на точку на графике, мне нужны соответственно Observation и Remarks. Можно ли это сделать с помощью боке? Если да, пожалуйста, помогите мне.

#output type
output_notebook()

bdvd = KN.loc[KN['Station Code']=='BDVD']

#1.Badravathi
#output plot
k1 = figure(plot_width=400, plot_height=250, title='Badravathi', x_axis_label = 'Week',y_axis_label='Score')

#Plot design
k1.title.align='center'
k1.title.text_font_size = '10pt'
k1.xaxis.axis_label_text_font_size = "10pt"
k1.yaxis.axis_label_text_font_size = "10pt"
k1.outline_line_color = "black"

#Plotting
k1.circle(x=bdvd['Week'], y=bdvd['Score'], color="blue")
k1.line(x=bdvd['Week'],y=bdvd['Score'],line_color="blue",line_width=2)

#Hovering
hover = HoverTool()
hover.tooltips = [("Observation", "@bdvd['Observation']"),("Remarks", "@bdvd['Remarks']")]
k1.tools.append(hover)

#Display
show(k1)

1 Ответ

0 голосов
/ 03 июля 2019

Вам необходимо создать ColumnDataSource объект для хранения всех данных:

import pandas as pd
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool

bdvd = pd.DataFrame(dict(Week=[1, 2, 3], Score=[10, 8, 9], Observation=["A", "B", "C"], Remarks=[1, 2, 3]))

k1 = figure(plot_width=400, plot_height=250, title='Badravathi', x_axis_label = 'Week',y_axis_label='Score')

k1.title.align='center'
k1.title.text_font_size = '10pt'
k1.xaxis.axis_label_text_font_size = "10pt"
k1.yaxis.axis_label_text_font_size = "10pt"
k1.outline_line_color = "black"

source = ColumnDataSource(bdvd)

k1.circle(x='Week', y='Score', color="blue", source=source)
k1.line(x='Week', y='Score', line_color="blue", line_width=2, source=source)

hover = HoverTool()
hover.tooltips = [("Observation", "@Observation"),("Remarks", "@Remarks")]
k1.tools.append(hover)

show(k1)
...