Bokek Hover Tool отображается некорректно |питон - PullRequest
0 голосов
/ 22 мая 2018

У меня есть следующий фрейм данных:

Date                   Impressions  Link_Clicks
2017-05-29 00-00-00    1,492,046    8,093
2017-06-05 00-00-00    845,012      4,864
2017-06-12 00-00-00    1,167,100    6,897
2017-06-19 00-00-00    895,781      4,472
2017-06-26 00-00-00    1,037,839    9,518
2017-07-03 00-00-00    1,139,060    9,668
2017-07-10 00-00-00    1,235,760    9,268
2017-07-17 00-00-00    1,200,906    7,989
2017-07-24 00-00-00    1,214,534    6,991
2017-07-31 00-00-00    1,434,225    7,311
2017-08-07 00-00-00    557,393      2,908

Я пытаюсь визуализировать это с помощью Bokeh, что мне удалось сделать успешно, однако при реализации инструмента наведения он возвращает число, деленное конкретно на2. Это ошибка?

Используемые библиотеки:

from bokeh.io import output_notebook, show, push_notebook
from bokeh.io import output_file, show, curdoc
output_notebook()
from bokeh.plotting import figure, ColumnDataSource
from bokeh.models import HoverTool, DatetimeTickFormatter, DataRange1d, CustomJS, Plot, LinearAxis, Grid
from bokeh.charts import Bar, BoxPlot, Donut, HeatMap, Histogram, Line, Scatter, TimeSeries

Мой код можно найти ниже:

source = ColumnDataSource(data=dict(
    desc = bar_df.index,
    y = bar_df["Link_Clicks"],
))

p = Bar(bar_df, label=bar_df.index, values="Link_Clicks", width=1, source=source, agg='sum',
       line_color="white", plot_width=900, plot_height=400, bar_width=0.9, legend=None, toolbar_location="right")

p.add_tools(HoverTool(tooltips=[("Link_Clicks", "@y{1.11}"),
                                ("Date", "@index")]))

p.xaxis.major_label_orientation = 45

show(p)

ПРИМЕЧАНИЕ: если вы попытаетесь повторить это,даты для Боке не могут быть в формате DateTime;только строки.

Для быстрого преобразования: df["Date"] = df["Date"].apply(lambda x: str(x).replace(':','-'))

enter image description here

При наведении курсора, вы можете видеть, что это делится на 2что странноЯ пытался умножить y * 2 в ColumnDataSource и в Hover Tool, но все равно не повезло.

Есть идеи?

1 Ответ

0 голосов
/ 23 мая 2018

Для тех, кто ищет это, я решил это благодаря тому, что указал мне правильное направление.Я попробовал это с более простым набором данных, но он работает со всем, что я пробовал.См. Ниже:

Данные:

bokeh_bar = df.groupby(["Audience"], as_index=False)["Impressions"].sum()

Index       Audience    Impressions
0           Core        23725548
1           Homepage    14163811
2           LAL_10%     18277859
3           LAL_3%      14879857
4           Page_1      4406266

Код:

    source = ColumnDataSource(data=dict(audience=list(bokeh_bar["Audience"]), 
                                    impressions=list(bokeh_bar["Impressions"]), 
                                    color=Spectral6))

p = figure(x_range=list(bokeh_bar["Audience"]), plot_width=900, plot_height=300, title="Impressions by Audience",
           toolbar_location=None, tools="")

p.vbar(x='audience', top='impressions', width=0.9, color='color', 
       legend="audience", source=source)

p.add_tools(HoverTool(tooltips=[("Audience", "@audience"), ("Impressions", "@impressions")]))

p.xgrid.grid_line_color = None
p.legend.orientation = "horizontal"
p.legend.location = ('top_right')
p.legend.label_text_font_size = '8pt'

show(p)

Результат:

enter image description here

Надеюсь, это помогло.Инструмент наведения также возвращает правильные цифры.

...