Я создаю диаграмму рассеяния и хочу показать некоторую информацию во всплывающей подсказке.
Идеально работает следующее:
import bqplot as bqp
import ipywidgets as ipw
xSc = bqp.LinearScale()
ySc = bqp.LinearScale()
tt = ipw.Label("A")
def hover_handler(self, content):
tt.value = str(content)
s = bqp.Scatter(x=[0, 1, 2], y=[1, 2, 3], scales=dict(x=xSc, y=ySc),
tooltip=tt)
s.on_hover(hover_handler)
bqp.Figure(marks=[s])
(нет осей и так далее, чтобы код был коротким)
При наведении курсора на каждую точку показывается ее content
просто отлично.

Однако я не хочу просто показыватьсырое содержание.Вместо этого я хочу показать его в табличной форме (но по умолчанию bqp.Tooltip
недостаточно для моих нужд).
Однако, если я оберну метку в ipw.VBox
, всплывающая подсказка станет крошечнойвертикальная лента.Добавление min_width
и min_height
увеличивает размер всплывающей подсказки, но содержимое отсутствует (даже если tt
было создано со значением по умолчанию).Если я делаю отдельный вызов для отображения только VBox, эта версия отображается нормально (даже без определения макета) и даже обновляется при перемещении мыши по точкам.
import bqplot as bqp
import ipywidgets as ipw
from IPython.display import display
xSc = bqp.LinearScale()
ySc = bqp.LinearScale()
tt = ipw.Label("A")
vb = ipw.VBox(children=[tt], layout=ipw.Layout(min_width='100px', min_height='100px'))
display(vb)
def hover_handler(self, content):
tt.value = str(content)
s = bqp.Scatter(x=[0, 1, 2], y=[1, 2, 3], scales=dict(x=xSc, y=ySc),
tooltip=vb)
s.on_hover(hover_handler)
bqp.Figure(marks=[s])

Что нужно сделать, чтобы всплывающая подсказка отображалась правильно?