всплывающая подсказка с заполненными строками bqplot

Я пытаюсь построить прогноз временного ряда, окруженный временными рядами с затемненными интервалами неопределенности, и чтобы всплывающие подсказки работали как для линии, так и для периметра неопределенности.

import pandas as pd
from bqplot import *
daterange = pd.date_range(start='2020-01-01', freq='1D', periods=20)
df = pd.DataFrame(index=daterange)
df['fcst'] = np.sin(np.arange(0,20)*2*np.pi / 20)

tt_ex = Tooltip(fields=['x', 'y' ], labels=['', ''], formats=["%B %Y", ',.2f'])

x_sc = DateScale()
y_sc = LinearScale()

fcst_vals = np.arange(0,20)*2*np.pi / 20

x_ax_fcst = Axis(scale=x_sc)
y_ax_fcst = Axis(scale=y_sc, orientation='vertical', tick_format='.2f')


fcst_uncertainty = Lines(x=[daterange.append(daterange[::-1])], 
                         y=[((df['fcst']+0.2).append((df['fcst'][::-1]-0.2)))],
                         fill_colors=['blue'],
                         fill='inside',
                         marker = 'cross',
                         stroke_width=1,
                         close_path=True,
                         scales={'x': x_sc, 'y': y_sc},
                         tooltip=tt_ex)
fcst_uncertainty.fill_opacities = [0.2]

fcst_line = Lines(x=[daterange], y=[df['fcst']],
                  scales={'x': x_sc, 'y': y_sc}, 
                  marker='circle', colors=['blue'],
                  tooltip=tt_ex)

example_fig = Figure(marks=[
    fcst_line,
    fcst_uncertainty
], axes=[x_ax_fcst, y_ax_fcst])

display(example_fig)

Но заливка блокирует всплывающую подсказку для основных таймсерий, которые находятся внутри залитой области. Есть ли простой способ обойти это? Если снять заливку, все работает как надо. Но я хочу наполнения. Я попытался создать еще один объект Lines без взаимодействия с всплывающей подсказкой и использовать его как заполненный объект, но это тоже не сработало. Спасибо!


person GrayOnGray    schedule 06.10.2020    source источник


Ответы (1)


Вы ударите себя ... переставьте метки в вызове Figure так, чтобы на первое место неопределенность, а на второе - на строку. Порядок списка функционирует аналогично zorder в matplotlib.

example_fig = Figure(marks=[
    fcst_uncertainty,
    fcst_line,

], axes=[x_ax_fcst, y_ax_fcst])

Кстати, хороший пример.

person ac24    schedule 06.10.2020
comment
Спасибо! Вы правы, когда пинаете себя. Вы можете увидеть, как мой маленький червивый мозг тянется к этому ответу из того факта, что я определил объекты в таком порядке (я имел в виду zorder), но почему-то я не пошел так далеко, чтобы связать их с Figure в этом порядке . - person GrayOnGray; 06.10.2020