Python BoxPlot с Bokeh - несколько точек данных отображаются на Hover - PullRequest
0 голосов
/ 07 мая 2019

Мои основные ИНСТРУМЕНТЫ для кода BoxPlot

TOOLTIPS = """
            <div style="background-color:orange;">
                <div>
                    <span style="font-size: 15px; color: #966;">@name</span>
                </div>

                <div>
                    <span style="font-size: 10px; color: black;">($y{int})</span>
                </div>
            </div>
        """                        

При наведении курсора на усы BoxPlot - отображается несколько точек данных.Я даже не уверен, является ли это приемлемым поведением для Bokeh, я предполагаю, что это ошибка кодирования с моей стороны.

p = figure(tools="", background_fill_color="#efefef", x_range=cats,plot_width=195, plot_height=550,tooltips=TOOLTIPS)

Код для усов, взятый из официального примера Bokeh: -

# whiskers (almost-0 height rects simpler than segments)
p.rect(cats, lower.height, 0.2, 0.01, line_color="black")

Мой график с несколькими точками данных, показанными как показано ниже - не знаю, где искать ошибку /Собственная ошибка кодирования.Пожалуйста, обратите внимание, что инструмент «Наведение» [PLUS Shaped Cursor] не виден на снимке экрана, когда снимок экрана находился над «нижней» точкой данных из двух отображаемых.

enter image description here

1 Ответ

1 голос
/ 07 мая 2019

Насколько я вижу в коде, вы определяете уровень tooltip на figure, поэтому наличие нескольких глифов (2 сегмента, 2 vbar, 2 прямоугольника, 1 круг) может привести к отображению нескольких всплывающих подсказок.

Я предлагаю вам создать HoverTool и явно указать для него средства визуализации следующим образом:

from bokeh.models import HoverTool

p = figure(tools="", background_fill_color="#efefef", x_range=cats,plot_width=195, plot_height=550)

b1 = p.vbar(cats, 0.7, q2.height, q3.height, fill_color="#E08E79", line_color="black")
b2 = p.vbar(cats, 0.7, q1.height, q2.height, fill_color="#3B8686", line_color="black")

hover = HoverTool(tooltips = TOOLTIPS, renderers = [b1, b2])
p.add_tools(hover)
...