Plotly-Dash в настоящее время не поддерживает объекты даты и времени .
Решение вашей проблемы - описать в моем ответе на другой вопрос Ploly datetime
Одним из возможных решений является использование двух разных аргументов при инициализации:
Пример использования панд для генерации метки времени:
Необходимый импорт:
import pandas as pd
import time
Некоторые необходимые функции:
daterange = pd.date_range(start='2017',end='2018',freq='W')
def unixTimeMillis(dt):
''' Convert datetime to unix timestamp '''
return int(time.mktime(dt.timetuple()))
def unixToDatetime(unix):
''' Convert unix timestamp to datetime. '''
return pd.to_datetime(unix,unit='s')
def getMarks(start, end, Nth=100):
''' Returns the marks for labeling.
Every Nth value will be used.
'''
result = {}
for i, date in enumerate(daterange):
if(i%Nth == 1):
# Append value to dict
result[unixTimeMillis(date)] = str(date.strftime('%Y-%m-%d'))
return result
Для объекта RangeSlider вы можете инициализировать его следующим образом:
dcc.RangeSlider(
id='year_slider',
min = unixTimeMillis(daterange.min()),
max = unixTimeMillis(daterange.max()),
value = [unixTimeMillis(daterange.min()),
unixTimeMillis(daterange.max())],
marks=getMarks(daterange.min(),
daterange.max())
)