【问题标题】:Grid dashboard with Plotly dash带有 Plotly dash 的网格仪表板
【发布时间】:2020-02-19 11:26:01
【问题描述】:

我正在尝试使用来自 Plotly 的 Dash 构建一个仪表板,该仪表板由一系列图块(文本)组成,如下图所示。

我正在尝试构建一个组件以重用它并构建下面的布局。每个框将包含一个标题、一个值和一个描述,如下所示。

有可用的组件吗?有人可以帮助我提供任何基本的想法/代码吗?

提前致谢!

【问题讨论】:

    标签: python html css plotly plotly-dash


    【解决方案1】:

    我建议查看Dash Bootstrap Components (dbc)。

    您可以使用嵌套在dbc.Row(行)组件中的dbc.Col(列)组件来生成布局。您可以查看here

    那么对于我称之为“卡片”的实际“卡片”,您可以使用dbc.Card 组件。这是link

    以下是一些复制您的布局的示例代码:

    import dash_bootstrap_components as dbc
    import dash_html_components as html
    
    card = dbc.Card(
        dbc.CardBody(
            [
                html.H4("Title", id="card-title"),
                html.H2("100", id="card-value"),
                html.P("Description", id="card-description")
            ]
        )
    )
    
    layout = html.Div([
        dbc.Row([
            dbc.Col([card]), dbc.Col([card]), dbc.Col([card]), dbc.Col([card]), dbc.Col([card])
        ]),
        dbc.Row([
            dbc.Col([card]), dbc.Col([card]), dbc.Col([card]), dbc.Col([card])
        ]),
        dbc.Row([
            dbc.Col([card]), dbc.Col([card])
        ])
    ])
    
    
    

    最好的办法可能是有一个函数来创建带有 ID、标题和描述参数的卡片,以省去创建不同卡片的麻烦:

    def create_card(card_id, title, description):
        return dbc.Card(
            dbc.CardBody(
                [
                    html.H4(title, id=f"{card_id}-title"),
                    html.H2("100", id=f"{card_id}-value"),
                    html.P(description, id=f"{card_id}-description")
                ]
            )
        )
    

    然后,您可以随意将每个card 替换为create_card('id', 'Title', 'Description')

    另一个快速提示是col 组件有一个参数width。您可以给一行中的每一列一个不同的值来调整相对宽度。您可以在我上面链接的文档中阅读更多相关信息。

    希望这会有所帮助,

    奥利

    【讨论】:

    • 这很酷,谢谢!你知道如何在 Dash 上直接使用 HTML 和 CSS 而不使用第三方库吗?
    • @jack87 只使用 html 和 css 会有点痛苦。您需要考虑使用 html div,然后使用 float 和 clear css 设置 div 的样式(不是 100% 确定,因为我在设计我的 dash 应用程序时尝试尽可能多地避开 html)。老实说,我已经开始使用 dbc,就好像它是 Dash 的标准部分一样。除非你做一个简单的 pip 安装有任何限制,否则我真的很推荐使用它。它可以大量清理您的代码并涵盖许多需要单独的样式表和更高级的 html 技术等的功能。
    猜你喜欢
    • 2020-06-13
    • 2021-09-23
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2020-08-22
    • 2021-08-27
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多