如何将两个自定义函数生成的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
相关产品推荐
相关产品推荐

