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

如何将两个自定义函数生成的ax与fig合并为单个子图布局?

把两个自定义函数的绘图合并成子图布局的方法

嘿,我来帮你搞定这个问题!你目前的两个函数各自独立创建了Figure和Axes对象,所以没法直接组合成子图。咱们只需要稍微调整函数,让它们支持接收外部传入的Axes对象,就能轻松把两幅图放到同一个画布的子图里啦。

步骤1:修改自定义函数

把原来函数里自己创建fig, ax的代码去掉,改成让函数接收一个ax参数,直接在这个传入的Axes上绘图:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

def function1(ax):
    # 不再自己创建fig和ax,用传入的ax绘图
    uniform_data = np.random.rand(10, 12)
    sns.heatmap(uniform_data, ax=ax)
    # 可选返回ax,方便后续调整样式
    return ax

def function2(ax):
    sns.barplot(x="day", y="total_bill", data=tips, ax=ax)
    return ax

步骤2:创建子图布局并调用函数

先创建一个包含2行1列子图的总画布,然后把每个子图的Axes对象传给对应的函数:

# 创建总画布和2行1列的子图,按需调整总画布尺寸
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(10, 12))

# 调用函数,传入对应的子图Axes
function1(ax1)
function2(ax2)

# 给子图添加标题,让内容更清晰
ax1.set_title("随机数据热力图")
ax2.set_title("账单按天统计柱状图")

# 自动调整子图间距,避免标签、标题重叠
plt.tight_layout()

# 展示最终合并后的绘图
plt.show()

为什么这样改?

原来的函数每次调用都会生成新的独立画布,而修改后我们可以统一管理画布的布局,把多个绘图放到同一个画布的不同子图位置,完全匹配你想要的plt.subplots(nrow=2,ncol=1)布局需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:19