gpt4 book ai didi

python - 带有 Plotly Dash 的日期 slider 不起作用

转载 作者:行者123 更新时间:2023-12-01 14:35:41 25 4
gpt4 key购买 nike

我正在尝试使用日期时间 slider 构建破折号应用程序,但以下代码不起作用 - url 显示“加载布局错误”。我是在做一些愚蠢的事情,还是在日期时间对象上构建 slider 需要任何技巧?可重现的代码如下:

import dash
import dash_core_components as dcc
import dash_html_components as html
import datetime

base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(0, 10)]

app = dash.Dash()

app.layout = html.Div([
html.Label('Slider'),
dcc.RangeSlider(min=min(date_list),
max=max(date_list),
value=min(date_list))
])

if __name__ == '__main__':
app.run_server()

最佳答案

Plotly-Dash 目前有 不支持日期时间对象 .

在我对另一个问题的回答中描述了您的问题的解决方案 Ploly datetime

一种可能的解决方案是在初始化时使用两个不同的参数:

  • 值(value)
  • 标记

  • 使用 pandas 生成时间戳的示例:

    需要进口:
    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())
    )

    关于python - 带有 Plotly Dash 的日期 slider 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063191/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com