如何实现条形图的日期范围
Posted
技术标签:
【中文标题】如何实现条形图的日期范围【英文标题】:How to implement date range for bar chart 【发布时间】:2021-10-31 21:38:42 【问题描述】:我已经在 plotly 中生成了一个条形图。每个条对应于 x 轴上的一个日期。如何实现某种日期选择器小部件,以便我可以看到特定日期或日期范围的栏。是否有任何模块已经可用于这项工作。同样的解决方案也适用于旭日图。
【问题讨论】:
plotly.com/python/range-slider @RobRaymond 它不适用于旭日形图,因为没有要更新的 xaxes。对旭日形图实施相同的任何建议? 您的问题 - 如何为条形图设置日期选择器?如果问题不同,我建议您将问题更新为您尝试过的问题 【参考方案1】:第 1 部分 - 带有“日期选择器”的条形图
创建一些用于绘图的示例数据 使用https://plotly.com/python/range-slider/的简单案例import pandas as pd
import numpy as np
import plotly.express as px
df = pd.DataFrame(**"date":pd.date_range("1-apr-2021", periods=100), **c:np.random.uniform(i,i+1, 100) for i,c in enumerate(list("abc")))
px.bar(df, x="date", y=list("abc")).update_layout(xaxis="rangeslider":"visible":True)
第 2 部分 - 旭日形上的日期选择器
再次使用示例数据,假设日期选择器适用于构成 sunburst 一部分的行 使用破折号 https://dash.plotly.com/dash-core-components/datepickerrange 简单的回调来过滤绘图中的数据import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import plotly.express as px
import pandas as pd
import numpy as np
from jupyter_dash import JupyterDash
app = JupyterDash(__name__)
app.layout = html.Div(
[
dcc.DatePickerRange(
id="date-picker",
start_date=df["date"].min(),
end_date=df["date"].max(),
display_format="MMMM Y, DD",
),
dcc.Graph(id="sunburst-fig"),
]
)
@app.callback(
Output("sunburst-fig", "figure"),
[Input("date-picker", "start_date"), Input("date-picker", "end_date")],
)
def update_graph(start_date, end_date):
if start_date:
dfp = df.loc[df["date"].between(*pd.to_datetime([start_date, end_date]))]
else:
dfp = df
fig = px.sunburst(dfp.assign(day=df["date"].dt.strftime("%a"), month=df["date"].dt.strftime("%b")),
path=["month","day"], values="a")
return fig
if __name__ == "__main__":
# app.run_server(debug=True)
app.run_server(mode="inline")
【讨论】:
以上是关于如何实现条形图的日期范围的主要内容,如果未能解决你的问题,请参考以下文章