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

如何为Plotly分面图的每个Y轴设置独立标题?

为Plotly分面图的每个Y轴设置独立标题

Pandas的Plotly绘图接口没有直接支持批量设置分面Y轴标题的参数,但可以通过手动遍历子图来实现每个Y轴的独立标题设置,具体步骤如下:

核心思路

先绘制基础分面图,再通过提取分面标签与对应Y轴标题的映射关系,逐个更新每个子图的Y轴标题。

完整实现代码

假设你的DataFrame中,variable_label是分面分组列,multiplier_label是每个分组对应的Y轴标题(需保证每个variable_label对应唯一的multiplier_label):

import pandas as pd

# 先绘制基础分面图,关闭Y轴匹配
fig = dataframe.plot(
    x="t", y="value",
    facet_col="variable_label",
    facet_col_wrap=2,
).update_yaxes(matches=None, showticklabels=True)

# 构建分面标签与Y轴标题的映射字典
y_title_map = dataframe.drop_duplicates("variable_label").set_index("variable_label")["multiplier_label"].to_dict()

# 遍历每个分面,设置对应Y轴标题
for idx, anno in enumerate(fig.layout.annotations):
    # 从分面标题中提取分组标签
    facet_label = anno.text.split("=")[-1].strip()
    # 计算子图的行号和列号(Plotly子图行列从1开始)
    row_num = idx // 2 + 1
    col_num = idx % 2 + 1
    # 更新对应子图的Y轴标题
    fig.update_yaxes(title_text=y_title_map[facet_label], row=row_num, col=col_num)

fig.show()

关键细节说明

  • fig.layout.annotations里保存了每个分面的标题文本,拆分后就能拿到当前分面的variable_label值。
  • 因为设置了facet_col_wrap=2,所以子图的行号用idx//2 +1计算,列号用idx%2 +1计算,确保定位到正确的子图。
  • 提前用drop_duplicates构建映射字典,避免重复处理相同的分面标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:10:43