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

如何在Plotly子图网格中为行/列设置属性?

Plotly多子图批量属性设置解决方案

前置规则说明

10行2列的子图中,第row行第col列的坐标轴命名规则为:

  • y轴对应字段:yaxis{(row-1)*2 + col}
  • x轴对应字段:xaxis{(row-1)*2 + col}
    比如第3行第1列的y轴对应yaxis5,x轴对应xaxis5。

需求1:为每一行设置yaxis_title

你可以提前准备每行的y轴标题列表,批量构造参数更新布局:

# 可自定义每行左右子图的y轴标题
left_y_titles = [f"第{i}行左子图Y轴" for i in range(1, N+1)]
right_y_titles = [f"第{i}行右子图Y轴" for i in range(1, N+1)]

title_params = {}
for row in range(1, N+1):
    # 左列y轴标题配置
    left_y_key = f"yaxis{(row-1)*2 + 1}"
    title_params[left_y_key] = {"title": left_y_titles[row-1]}
    # 右列y轴标题配置,不需要可以删除这段
    right_y_key = f"yaxis{row*2}"
    title_params[right_y_key] = {"title": right_y_titles[row-1]}

fig.update_layout(**title_params)

需求2:第一列y轴范围固定为[1,10],仅底部显示刻度标签

配置说明

  • 所有第一列的y轴统一设置range: [1,10]
  • 第一列除了最后一行(最底部)的x轴隐藏刻度标签,仅保留最后一行的刻度显示

实现代码

col1_params = {}
for row in range(1, N+1):
    y_key = f"yaxis{(row-1)*2 + 1}"
    x_key = f"xaxis{(row-1)*2 + 1}"
    # 统一设置y轴范围
    col1_params[y_key] = {"range": [1, 10]}
    # 非最后一行隐藏x轴刻度标签
    if row != N:
        col1_params[x_key] = {"showticklabels": False}

fig.update_layout(**col1_params)

也可以用参考示例中的字典推导写法,更简洁:

# 仅设置第一列y轴范围的字典推导写法
col1_y_params = {
    f'yaxis{k}': {'range': [1, 10]}
    for k in range(1, 2*N, 2)
}

所有配置可以合并到同一个参数字典中,仅调用一次fig.update_layout()即可,无需分开多次调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:02