css 虚线图布局

ssm49v7z  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(143)

我有一个非常笼统的问题:如何管理dash-plotly在python中创建的 Jmeter 板中的分区/图表的布局。假设我有下面的代码:

def charts():
    data = [go.Bar(
        x=['giraffes', 'orangutans', 'monkeys'],
        y=[20, 14, 23] )]
    return data
app = dash.Dash()

app.layout = html.Div([

    html.Div([
        dcc.Graph(
            id='figure1',
            figure=charts()
        ),
    ], style={'width': '49%', 'display': 'inline-block'}),
    html.Div([
        dcc.Graph(
            id = 'figure2',
            figure=charts()
        ),
        dcc.Graph(
            id='figure3',
            figure=charts()
        )
    ], style= {'width': '49%', 'display': 'inline-block'})
])

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

我想要的是:

+++++++++++++++++++++++
+         +  figure2  +
+ figure1 +           +
+         +  figure3  + 
+++++++++++++++++++++++

但我得到的是:

+++++++++++++++++++++++
+         +  figure2  +
+         +           +
+ figure1 +  figure3  + 
+++++++++++++++++++++++

问题就在这里:
1.一般情况下,如何管理参数来改变布局?
1.使用宽度来管理宽度,但如何管理高度(在本例中,我希望图1的高度是图2或图3的两倍)?

h9vpoimq

h9vpoimq1#

dcc.Graph的layout标签用于设置图形的布局,而不是HTML的布局。我通常使用bootstrap或任何其他CSS来获取Grid配置,使用Grid系统来对齐东西很容易。您可以通过在代码中追加此行来添加外部或内联样式表。根据您正在使用的CSS更改“external_url”。

app.css.append_css({"external_url": "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"})
yeotifhr

yeotifhr2#

您的问题包含两个独立的主题:

应用程序布局

你想得到这样的东西:

+++++++++++++++++++++++
+         +  figure2  +
+ figure1 +           +
+         +  figure3  + 
+++++++++++++++++++++++

这将引用应用程序布局,因为您正在定义要在 Jmeter 板中包含形状为3x2的网格。
实现这一点的简单方法是使用Dash Bootstrap组件的grid layout
可以使用以下命令定义布局:

app = dash.Dash(external_stylesheets=[dbc.themes.SLATE])

app.layout = html.Div([

    dbc.Row(
        children = [
            dbc.Col(),
            dbc.Col(dcc.Graph(
                id='figure1',
                figure=charts()
            ))
            ]
        ),
    dbc.Row(
        children = [
            dbc.Col(dcc.Graph(
                id='figure2',
                figure=charts()
            )),
            dbc.Col()
            ]
        ),
    dbc.Row(
        children = [
            dbc.Col(),
            dbc.Col(dcc.Graph(
                id='figure3',
                figure=charts()
            ))
            ]
        )
    ])

在此布局中有3行,每行包含2列。
请注意,每列都有“width”属性。网格的总宽度为12,您可以按如下方式定义每列的宽度:

dbc.Col(
    children = dcc.Graph(
        id='figure2',
        figure=charts()),
    width = 10
),

图表布局

您希望一个图表的高度是另一个图表的两倍。您可以按照plotly的图表布局文档中的说明定义每个plotly图表的height属性,请参见here
在那里你会发现多个例子,但它可以像你设置宽度一样设置。

相关问题