如何实现条形图的日期范围

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")

【讨论】:

以上是关于如何实现条形图的日期范围的主要内容,如果未能解决你的问题,请参考以下文章

Android图表设计如图,各位请问如何实现呢?

如何使用 matplotlib 绘制条形范围图?

条形图仅显示一个 x 值的条形图

Android图表库MPAndroidChart——换一种思考方式,水平条形图的实现过程

用渐变填充条形图的径向条

使用日期作为Xticks绘制带有子图的条形图