You need to enable JavaScript to run this app. 如何使用plotly.express添加次级x轴并合并图例布局配置
优惠活动
大模型
产品
解决方案
定价
更多

如何使用plotly.express添加次级x轴并合并图例布局配置

报错问题解决

你遇到的报错是因为make_subplots的specs参数不支持secondary_x配置项,官方仅提供了secondary_y的快捷配置入口,想要实现次级X轴需要手动配置轴属性,无需使用make_subplots方法,修正后的可运行代码如下:

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# 样例数据
df1=pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
df2=pd.DataFrame({'C':[10,20,30],'D':[40,50,60]})

# 初始化画布
fig = go.Figure()

# 添加第一个数据集,绑定默认主X轴
fig.add_trace(go.Scatter(x=df1['A'], y=df1['B'], mode='markers', name='数据集1'))
# 添加第二个数据集,绑定次级X轴
fig.add_trace(go.Scatter(x=df2['C'], y=df2['D'], mode='markers', name='数据集2', xaxis='x2'))

# 手动配置次级X轴属性
fig.update_layout(
    xaxis=dict(title="第一X轴"),
    xaxis2=dict(
        title="第二X轴",
        overlaying='x', # 与主X轴重叠显示
        side='top', # 展示在画布顶部
        showgrid=False
    ),
    yaxis=dict(title="Y轴")
)

fig.show()
布局配置合并说明

update_layout方法和fig.layout = layout的写法完全可以合并,两者本质都是修改画布的布局属性,区别仅在于:

  • fig.layout = layout是全量替换原有布局配置
  • update_layout是增量修改,仅覆盖你指定的配置项,其余原有配置保留

你可以直接把所有布局配置整合到同一个字典里统一赋值,示例如下:

# 定义完整布局配置
custom_layout = go.Layout(
    # 你的图例配置
    legend=dict(
        yanchor="top",
        y=0.99,
        xanchor="left",
        x=0.83,
        font=dict(
            family="Trebuchet",
            size=20,
            color="black"
         ),
        bgcolor="LightGray",
        bordercolor="Black",
        borderwidth=0
    ),
    # 其他布局配置
    title="双X轴散点图示例",
    xaxis=dict(title="第一X轴"),
    xaxis2=dict(
        title="第二X轴",
        overlaying='x',
        side='top',
        showgrid=False
    ),
    yaxis=dict(title="Y轴")
)

# 直接赋值给fig.layout
fig.layout = custom_layout

如果需要后续追加配置,也可以在赋值后继续调用update_layout方法,两者兼容不会冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:36:08