У меня есть точечный график данных, и я хотел бы выделить определенные диапазоны оси X.Когда диапазоны чисел, которые нужно выделить, относительно малы, использование BoxAnnotation
работает хорошо.Тем не менее, я пытаюсь сделать много смежных выделений (с различной непрозрачностью).Со многими смежными BoxAnnotations
, уменьшенными, рамки слегка перекрываются, создавая линии.Кроме того, тысячи BoxAnnotations
требуют много времени для генерации и не работают гладко при взаимодействии с графиком.
Если говорить более конкретно о моем случае, у меня есть некоторые временные данные и прогнозная модель, определяющая вероятностькакого-то события, происходящего в данных.Я хочу, чтобы каждый сегмент был выделен с непрозрачностью, определяемой вероятностью того, что событие происходит в этот момент времени.Тем не менее, мой текущий подход BoxAnnotation
приводит к искусственным линиям от перекрытия прямоугольников при уменьшении масштаба (они исчезают при увеличении масштаба области) и медленной реакции интерактивного графика.
Есть ли способ выполнитьчто-то похожее на это без артефактов и с более плавным опытом?
Текущий метод:
source = ColumnDataSource(data=data_frame)
figure_ = figure(x_axis_label='Time', y_axis_label='Intensity')
for index in range(data_frame.shape[0] - 1):
figure_.add_layout(
BoxAnnotation(left=data_frame['time'].values[index], right=data_frame['time'].values[index + 1],
fill_alpha=data_frame['prediction'].values[index], fill_color='red', line_alpha=0)
)
figure_.circle(x='time', y='intensity', source=source)
show(figure_)
Пример искусственных линий, когда слишком много мелкихBoxAnnotations
:
При увеличении по оси X линии исчезают: