@cache.memoize(timeout=3590), 可选择设置缓存, 我没使用
def get_df():
“”“获取当日最新的文章数据”“”
df = pd.read_sql(today, con=engine)
df[‘date_day’] = df[‘date’].apply(lambda x: x.split(’ ')[0]).astype(‘datetime64[ns]’)
df[‘date_month’] = df[‘date’].apply(lambda x: x[:7].split(‘-’)[0] + “年” + x[:7].split(‘-’)[-1] + “月”)
df[‘weekday’] = df[‘date_day’].dt.weekday
df[‘year’] = df[‘date_day’].dt.year
df[‘month’] = df[‘date_day’].dt.month
df[‘week’] = df[‘date_day’].dt.isocalendar().week
return df
导航栏的图片及标题
head = html.Div([
html.Div(html.Img(src=‘./assets/img.jpg’, height=“100%”), style={“float”: “left”, “height”: “90%”, “margin-top”: “5px”, “border-radius”: “50%”, “overflow”: “hidden”}),
html.Span(“{}博客的Dashboard”.format(info[‘author_name’][0]), className=‘app-title’),
], className=“row header”)
第一列的文字及数字信息
columns = info.columns[3:]
col_name = [‘文章数’, ‘关注数’, ‘喜欢数’, ‘评论数’, ‘等级’, ‘访问数’, ‘积分’, ‘排名’]
row1 = html.Div([
indicator(col_name[i], col) for i, col in enumerate(columns)
], className=‘row’)
第二列
row2 = html.Div([
html.Div([
html.P(“每月文章写作情况”),
dcc.Graph(id=“bar”, style={“height”: “90%”, “width”: “98%”}, config=dict(displayModeBar=False),)
], className=“col-4 chart_div”,),
html.Div([
html.P(“各类型文章占比情况”),
dcc.Graph(id=“pie”, style={“height”: “90%”, “width”: “98%”}, config=dict(displayModeBar=False),)
], className=“col-4 chart_div”),
html.Div([
html.P(“各类型文章阅读情况”),
dcc.Graph(id=“mix”, style={“height”: “90%”, “width”: “98%”}, config=dict(displayModeBar=False),)
], className=“col-4 chart_div”,)
], className=‘row’)
年数统计, 我的是2019 2020 2021
years = get_df()[‘year’].unique()
select_list = [‘每月文章’, ‘类型占比’, ‘类型阅读量’, ‘每日情况’]
两个可交互的下拉选项
dropDowm1 = html.Div([
html.Div([
dcc.Dropdown(id=‘dropdown1’,
options=[{‘label’: ‘{}年’.format(year), ‘value’: year} for year in years],
value=years[1], style={‘width’: ‘40%’})
], className=‘col-6’, style={‘padding’: ‘2px’, ‘margin’: ‘0px 5px 0px’}),
html.Div([
dcc.Dropdown(id=‘dropdown2’,
options=[{‘label’: select_list[i], ‘value’: item} for i, item in enumerate([‘bar’, ‘pie’, ‘mix’, ‘heatmap’])],
value=‘heatmap’, style={‘width’: ‘40%’})
], className=‘col-6’, style={‘padding’: ‘2px’, ‘margin’: ‘0px 5px 0px’})
], className=‘row’)
第三列
row3 = html.Div([
html.Div([
html.P(“每日写作情况”),
dcc.Graph(id=“heatmap”, style={“height”: “90%”, “width”: “98%”}, config=dict(displayModeBar=False),)
], className=“col-6 chart_div”,),
html.Div([
html.P(“文章列表”),
html.Div(get_news_table(get