Форматирование значения ползунка боке для отображения только текущих секунд от Datetime - PullRequest
0 голосов
/ 16 июня 2020

У меня проблемы с выяснением того, как отформатировать боке RangeSlider в datetime и показывать только текущие секунды (как показывает ось x). У меня есть график с датой и временем по оси x, и я реализовал RangeSlider, который автоматически обновляет свой диапазон до текущего диапазона графика, который передается с текущим временем по оси x. Я пытался использовать DateRangeSlider, но, увы, это не сработало, так как я обновляю положение Spans с помощью значения Slider.

Также необходимо отформатировать Delta Spans так, чтобы показать только разницу в секундах с этими промежутками на графике.

И простите, я новичок во всем этом.

my_figure = figure(plot_width=800, plot_height=400, x_axis_type='datetime')
test_data = ColumnDataSource(data=dict(x=[0], y=[0]))
line = my_figure.line("x", "y", source=test_data)

############ Slider and Span ##################
x_slider = RangeSlider(start=0, end=10, value=(0,10), step=0.1, title='time', show_value=False)
xmin_span = Span(location=x_slider.value[0], dimension='height')
xmax_span = Span(location=x_slider.value[1], dimension='height')
my_figure.add_layout(xmin_span)
my_figure.add_layout(xmax_span)

############ Difference of Spans #############
deltatime = str(x_slider.value[1] - x_slider.value[0])

htmltext_time =  """ 
                 <hr />
                 <h4 style="text-align: center;">&Delta;t =""" + deltatime + """s</h4>
                 <hr />
                 <p style="text-align: center;">&nbsp;</p>
                 """

########## Text #############
deltat = Div(text=htmltext_time)

########## Callbacks for updating Slider, Spans and Text ##########
x_slider.callback = CustomJS(args=dict(xmin_span=xmin_span, xmax_span=xmax_span, deltat=deltat), code=
                 """
                 xmin_span.location = cb_obj.value[0];
                 xmax_span.location = cb_obj.value[1];

                 var deltanum = cb_obj.value[1] - cb_obj.value[0];
                 deltatime = deltanum.toFixed(3);
                 deltat.text = `<hr />
                 <h4 style="text-align: center;">&Delta;t = ${deltatime}s</h4>
                 <hr />
                 <p style="text-align: center;">&nbsp;</p>`;
                 """)

...