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

如何放大Python Dash子图的Y轴以优化可视化比例?

解决Dash子图Y轴过窄、调整为接近方形的方法

要让Dash中的子图更接近方形(Y轴显示空间更大),同时保持轴的数值比例不强制相等,可以通过以下几种方式调整布局:

1. 调整整体Figure的宽高

直接在update_layout()中设置height和width参数,给Y轴分配更多显示空间:

fig.update_layout(
    height=800,  # 根据需求调整高度
    width=750,   # 对应设置合适的宽度
    margin=dict(l=50, r=50, t=50, b=50)  # 可选:调整边距避免内容被截断
)

2. 创建子图时设置行/列比例

使用make_subplots()的row_heights或column_widths参数,自定义每行/列子图的高度/宽度占比,强化Y轴方向的空间:

比如创建两行子图时,设置每行高度占比:

from plotly.subplots import make_subplots

# 两行子图,每行高度占比相同,配合整体高度实现方形效果
fig = make_subplots(rows=2, cols=1, row_heights=[0.5, 0.5])

如果是单张子图,可设置row_heights=[1.0],再搭配update_layout的宽高参数调整整体比例。

3. 避免强制轴比例相等

不要设置yaxis的scaleanchor和scaleratio参数(这两个会强制X/Y轴等比例缩放),保持轴的autorange=True(默认值)即可,让Plotly自动根据数据范围调整轴的显示。

完整示例代码

from dash import Dash, dcc, html
from plotly.subplots import make_subplots
import plotly.graph_objects as go

app = Dash(__name__)

# 创建2行1列的子图,设置行高比例
fig = make_subplots(rows=2, cols=1, row_heights=[0.5, 0.5])

# 添加示例数据
fig.add_trace(go.Scatter(x=[1, 2, 3, 4], y=[100, 200, 150, 300]), row=1, col=1)
fig.add_trace(go.Bar(x=[1, 2, 3, 4], y=[50, 120, 90, 200]), row=2, col=1)

# 调整整体宽高,让子图接近方形
fig.update_layout(
    height=800,
    width=700,
    title_text="接近方形的子图示例"
)

# 保持轴自动范围,不强制等比例
fig.update_xaxes(autorange=True)
fig.update_yaxes(autorange=True)

app.layout = html.Div([
    dcc.Graph(figure=fig)
])

if __name__ == '__main__':
    app.run_server(debug=True)

通过以上调整,既能保证子图接近方形的可视化效果,又不会强制X/Y轴的数值比例相等,适配数据差异较大的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:19:59