You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly Dash仪表板:调整图表宽度并实现双图同行布局

解决方案:让两个图表同行显示并调整宽度/高度

看起来问题出在你没有明确指定categoryPerformance和categoryPerformanceTrend所在的dbc.Col宽度分配,同时需要给目标图表设置固定高度并让宽度自适应容器。下面是具体的修改步骤和解释:

1. 给Bootstrap列指定宽度(确保同行显示)

Bootstrap采用12列网格系统,你可以通过给dbc.Col设置width参数来分配两个图表的宽度占比。比如让第一个图表占4列,第二个占8列(直接满足你让第二个图表更宽的需求):

dbc.Row([
    # 第一个图表:占4列,宽度自适应容器
    dbc.Col([
        dcc.Graph(
            id='categoryPerformance',
            figure=dict(
                data=ge.returnCategoryOverviewBarGraph(df)[0],
                # 强制图表宽度填满所在列容器
                layout=ge.returnCategoryOverviewBarGraph(df)[1].update(width='100%')
            )
        )
    ], width=4),
    # 第二个图表:占8列,固定高度+宽度自适应
    dbc.Col([
        dcc.Graph(
            id='categoryPerformanceTrend',
            style={'height': '400px'},  # 固定高度,数值可根据你的需求调整
            # 后续通过回调生成图表时,记得保持布局设置一致
            # figure=go.Figure(...).update_layout(height=400, width='100%')
        )
    ], width=8)
]),

2. 确保图表自适应容器宽度

  • 对于categoryPerformance,调用update(width='100%')可以让图表自动填满所在的dbc.Col空间,避免出现溢出或留白。
  • 如果后续通过回调给categoryPerformanceTrend生成图表,记得在figure的layout中同步设置固定高度和自适应宽度,示例如下:
@app.callback(Output('categoryPerformanceTrend', 'figure'), [...])
def update_trend_graph(...):
    fig = go.Figure(...)
    fig.update_layout(
        height=400,  # 和style里的高度保持一致,也可以只在这里设置
        width='100%',
        # 其他布局配置...
    )
    return fig

为什么之前的代码无法实现同行?

你下面的idvlCategoryPerformanceBest和idvlCategoryPerformanceLeast能正常同行,是因为当dbc.Col未指定宽度时,Bootstrap默认会让它们平分12列(各占6列)。但上面的两个图表因为第一个图表的figure可能继承了固定宽度,导致空间挤压,无法自动适配平分规则。明确指定width参数后,Bootstrap会强制按照你设置的比例分配列宽,确保它们稳定在同一行显示。

内容的提问来源于stack exchange,提问作者Ragesh Kr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:02:26