У меня есть таблица, которая содержит количество раз, когда студент обращался к действию.Инструмент Hover не работает в Bokeh
df_act5236920.head()
activities studs
0 3.0 student 1
1 4.0 student 10
2 5.0 student 11
3 6.0 student 12
4 2.0 student 13
5 4.0 student 14
6 19.0 student 15
Если я пытаюсь добавить инструмент парения в гистограмме, создаваемого этим dataframe через код ниже:
from bokeh.charts import Bar
from bokeh.models import Legend
from collections import OrderedDict
TOOLS = "pan,wheel_zoom,box_zoom,reset,hover,save"
bar = Bar(df_act5236920,values='activities',label='studs',title = "Activity 5236920 performed by students",
xlabel="Students",ylabel="Activity",legend=False,tools=TOOLS)
hover = bar.select_one(HoverTool)
hover.point_policy = "follow_mouse"
hover.tooltips = OrderedDict([
("Student Name", "@studs"),
("Access Count", "@activities"),
])
show(bar)
Когда я наведите курсор мыши на гистограмме, она показывает значение студента, но не значения активности, я даже пытался использовать «$ activities», но результат все тот же.
Я попытался с помощью ColumnDataSource вместо DataFrame на основе других вопросов переполнения стека, которые я прочитал, как это видно в приведенном ниже коде:
source = ColumnDataSource(ColumnDataSource.from_df(df_act5236920))
from collections import OrderedDict
TOOLS = "pan,wheel_zoom,box_zoom,reset,hover,save"
bar = Bar('studs','activities',source=source, title = "Activity 5236920 performed by students",tools=TOOLS)
hover = bar.select_one(HoverTool)
hover.point_policy = "follow_mouse"
hover.tooltips = OrderedDict([
("Student Name", "@studs"),
("Access Count", "@activities"),
])
show(bar)
Это дает мне следующую ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-76-81505464c390> in <module>()
3 # bar = Bar(df_act5236920,values='activities',label='studs',title = "Activity 5236920 performed by students",
4 # xlabel="Students",ylabel="Activity",legend=False,tools=TOOLS)
----> 5 bar = Bar('studs','activities',source=source, title = "Activity 5236920 performed by students",tools=TOOLS)
6 hover = bar.select_one(HoverTool)
7 hover.point_policy = "follow_mouse"
C:\Anaconda2\lib\site-packages\bokeh\charts\builders\bar_builder.pyc in Bar(data, label, values, color, stack, group, agg, xscale, yscale, xgrid, ygrid, continuous_range, **kw)
319 kw['y_range'] = y_range
320
--> 321 chart = create_and_build(BarBuilder, data, **kw)
322
323 # hide x labels if there is a single value, implying stacking only
C:\Anaconda2\lib\site-packages\bokeh\charts\builder.pyc in create_and_build(builder_class, *data, **kws)
66 # create the new builder
67 builder_kws = {k: v for k, v in kws.items() if k in builder_props}
---> 68 builder = builder_class(*data, **builder_kws)
69
70 # create a chart to return, since there isn't one already
C:\Anaconda2\lib\site-packages\bokeh\charts\builder.pyc in __init__(self, *args, **kws)
292 # make sure that the builder dimensions have access to the chart data source
293 for dim in self.dimensions:
--> 294 getattr(getattr(self, dim), 'set_data')(data)
295
296 # handle input attrs and ensure attrs have access to data
C:\Anaconda2\lib\site-packages\bokeh\charts\properties.pyc in set_data(self, data)
170 data (`ChartDataSource`): the data source associated with the chart
171 """
--> 172 self.selection = data[self.name]
173 self._chart_source = data
174 self._data = data.df
TypeError: 'NoneType' object has no attribute '__getitem__'
Я даже попытался создать источник ColumnDataSource с нуля, передав ему столбцы dataframe в виде списка значений эс, но я до сих пор получил ту же ошибку, как показано выше
source = ColumnDataSource(data=dict(
studs=students,
activities=activity_5236920,
))
У меня такая же проблема, когда я пытаюсь реализовать hovertool на тепловой карте, а также. Может ли кто-нибудь помочь в том, как это исправить?
Попробуйте 'source = ColumnDataSource (df_act5236920)' from_df() устарел в Bokeh 0.9.3. Возможно, стоит сделать снимок –
@BobHaffner Я попробовал, но ошибка все тот же. Исходный объект был создан с двумя другими реализациями, о которых я упоминал. Я предполагаю, что, возможно, они пустые, и поэтому он бросает ошибку NoneType, но я не знаю, почему она пуста. – Sift
Хорошо. Что касается ошибки, я думаю, что ваш источник в порядке. Просто [Bar()] (http://bokeh.pydata.org/en/0.11.0/docs/reference/charts.html#bar) ожидает, что источник данных будет первым аргументом, и вы передаете строку Попробуйте 'bar = Bar (df_act5236920, label = 'studs', values = 'activities', source = source, title =« Activity 5236920, выполненный студентами », tools = TOOLS). Нет подсказки на вашей проблеме наконечника инструмента tho.Удачи –