gpt4 book ai didi

python - Plotly-Dash 有未知问题并使用 Python-pandas.date_range 创建 "Error loading dependencies"

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:21 26 4
gpt4 key购买 nike

我偶然发现了 this发布并使用我自己程序的最终答案评论中提到的修改。但在我尝试使用以下代码对其进行测试之前:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd

app = dash.Dash()

daterange = pd.date_range(start='1994',end='2018',freq='W')

app.layout = html.Div(children=[
html.H1('Range Slider Testing'),
html.Div(
[
html.Label('From 1994 to 2018', id='time-range-label'),
dcc.RangeSlider(
id='year_slider',
min=daterange.min (),
max=daterange.max (),
value = [daterange.min(), daterange.max()],
step='W',
),
],
style={'margin-top': '20'}
),
html.Hr(),

dcc.Graph(id='my-graph')
])

@app.callback(
dash.dependencies.Output('my-graph', 'figure'),
[dash.dependencies.Input('year_slider', 'value')])
def _update_graph(year_range):
date_start = '{}'.format(year_range[0])
date_end = '{}'.format(year_range[1])

@app.callback(
dash.dependencies.Output('time-range-label', 'children'),
[dash.dependencies.Input('year_slider', 'value')])
def _update_time_range_label(year_range):
return 'From {} to {}'.format(year_range[0], year_range[1])

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

因此它不会引发任何 Python 错误,但是由 Dash 创建的 HTML 上有一个Error loading dependencies 文本...

最佳答案

默认情况下,dash 似乎不支持日期时间 对象。

您可以通过将日期时间对象转换为 unix 时间戳来解决此问题。

我对你的问题的解决方案是:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd

import time

app = dash.Dash()

daterange = pd.date_range(start='1994',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

app.layout = html.Div(children=[
html.H1('Range Slider Testing'),
html.Div(
[
html.Label('From 1994 to 2018', id='time-range-label'),
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()),
),
],
style={'margin-top': '20'}
),
html.Hr(),

dcc.Graph(id='my-graph')
])

@app.callback(
dash.dependencies.Output('time-range-label', 'children'),
[dash.dependencies.Input('year_slider', 'value')])
def _update_time_range_label(year_range):
return 'From {} to {}'.format(unixToDatetime(year_range[0]),
unixToDatetime(year_range[1]))

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

关于python - Plotly-Dash 有未知问题并使用 Python-pandas.date_range 创建 "Error loading dependencies",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49371248/

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