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

如何为3行1列子图中前两个数据图设置共享X轴?

解决方法

要实现前两行数据图共享X轴、第三行图像图独立X轴的需求,有两种简单可行的方式:

方法一:创建子图时直接指定独立X轴

在make_subplots的specs参数中,给第三行的子图配置独立的X轴标识,同时开启全局X轴共享:

fig = make_subplots(rows=3, cols=1, 
                vertical_spacing=0.05, 
                specs=[
                    [{"secondary_y": False}],
                    [{"secondary_y": True}],
                    [{"secondary_y": False, "type": "image", "xaxis": "x3"}]  # 为第三行指定独立X轴x3
                ],  
                subplot_titles=(plot_title_1stsubplot, plot_title_2ndsubplot),
                row_heights=[0.7,0.15,0.15],
                shared_xaxes=True,  # 开启全局X轴共享,第三行因指定独立轴不受影响
               )

原理:shared_xaxes=True会让所有未指定独立轴的子图共享X轴,给第三行子图加上"xaxis": "x3",就能强制它使用独立的X轴,避开共享规则。

方法二:创建子图后手动配置X轴匹配

保持原有shared_xaxes=False,在子图创建完成后,手动指定第二行X轴匹配第一行,第三行不匹配:

fig = make_subplots(rows=3, cols=1, 
                vertical_spacing=0.05, 
                specs=[[{"secondary_y": False}],[{"secondary_y": True}],[{"secondary_y": False,"type": "image"}]],
                subplot_titles=(plot_title_1stsubplot,plot_title_2ndsubplot),
                row_heights=[0.7,0.15,0.15],
                shared_xaxes=False,
               )

# 让第二行X轴匹配第一行,实现共享
fig.update_xaxes(matches='x', row=2, col=1)
# 确保第三行X轴独立,不参与共享
fig.update_xaxes(matches=None, row=3, col=1)

原理:update_xaxes的matches参数可以指定当前X轴要匹配的目标轴,'x'对应第一行的X轴,None则表示独立。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:10:06