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

如何在Plotly与Pandas中为第二张子图添加次坐标轴?

Plotly 第二张子图添加次坐标轴的解决方案

问题原因

你之前的代码报错是因为specs参数的结构和子图行列数不匹配:当设置rows=2, cols=1时,specs需要是一个2行1列的嵌套列表,每个子图对应一个配置字典,而你只写了一行配置,导致结构不兼容。

正确实现步骤

1. 正确初始化带次坐标轴的子图

通过specs参数为第二张子图单独启用次坐标轴,第一张子图保持默认配置:

from plotly.subplots import make_subplots
import pandas as pd
import numpy as np

# 生成示例数据(可替换为你的真实数据)
np.random.seed(42)
df = pd.DataFrame({
    '主轴数据1': np.random.randn(100).cumsum(),
    '主轴数据2': np.random.randn(100).cumsum() + 5,
    '次轴数据': np.random.randn(100).cumsum() * 100
})

# 初始化2行1列子图,仅第二张子图启用次坐标轴
fig = make_subplots(rows=2, cols=1, specs=[[{}], [{'secondary_y': True}]])

2. 将Pandas生成的图表trace添加到对应位置

添加trace时,需要通过row指定子图行号,secondary_y指定是否使用次坐标轴:

# 用Plotly作为Pandas绘图后端生成图表
fig1 = df.plot(backend='plotly')

# 把前两个trace添加到第二张子图的主坐标轴
for trace in fig1.data[:2]:
    fig.add_trace(trace, row=2, col=1, secondary_y=False)

# 把第三个trace添加到第二张子图的次坐标轴
fig.add_trace(fig1.data[2], row=2, col=1, secondary_y=True)

# (可选)给第一张子图添加示例数据
fig.add_trace(fig1.data[0], row=1, col=1)

# 设置坐标轴标签(可选)
fig.update_yaxes(title_text="主坐标轴", row=2, col=1, secondary_y=False)
fig.update_yaxes(title_text="次坐标轴", row=2, col=1, secondary_y=True)

# 展示图表
fig.show()

关键说明

  • specs参数的结构必须和rows、cols对应:比如rows=2, cols=1时,specs是[[子图1配置], [子图2配置]]
  • 添加trace时,secondary_y=True表示将该trace绑定到次坐标轴,False绑定到主坐标轴
  • 如果需要给第一张子图也加次坐标轴,只需把对应位置的specs字典改成{'secondary_y': True}即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:50