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

如何在Matplotlib mosaic创建的logo子图内嵌入子图?

在matplotlib mosaic子图中为logo子图添加内嵌子图

要在通过subplot_mosaic生成的logo子图内部创建子图,直接使用matplotlib的inset_axes()方法即可,该方法可以在已有轴对象上创建内嵌子轴,完全适配mosaic布局场景。

实现步骤

  1. 取出logo子图的轴对象:ax_dict["logo"]
  2. 调用inset_axes()方法创建内嵌子图,参数采用归一化坐标(范围0-1),格式为[left, bottom, width, height],分别代表内嵌子图距离父轴左侧、底部的比例,以及自身宽高相对于父轴的比例。

修改后的代码示例

在你的代码中,生成ax_dict之后插入以下代码即可:

# 在logo子图内创建内嵌子图,位置偏右上,大小为父图的30%×30%
ax_logo_inset = ax_dict["logo"].inset_axes([0.6, 0.6, 0.3, 0.3])
# 向内嵌子图添加内容,示例为绘制折线图并设置标题
ax_logo_inset.plot(np.arange(10), np.random.randn(10))
ax_logo_inset.set_title("内嵌子图", fontsize=8)
# 隐藏部分刻度避免拥挤
ax_logo_inset.tick_params(axis='both', labelsize=6)

完整关键代码片段

layout = [["logo", "logo","logo"],["logo", "logo","logo"],["bar", "bar","bar"],["bar", "bar","bar"],["alpha","beta","edge"]]

fig = plt.figure(figsize = (5,9))

ax_dict = fig.subplot_mosaic(layout)

# --- 新增内嵌子图代码 ---
ax_logo_inset = ax_dict["logo"].inset_axes([0.6, 0.6, 0.3, 0.3])
ax_logo_inset.plot(np.arange(10), np.random.randn(10))
ax_logo_inset.set_title("内嵌子图", fontsize=8)
ax_logo_inset.tick_params(axis='both', labelsize=6)
# --- 新增结束 ---

ax_dict["logo"].annotate(
    xy = (3.3, 95),
    text = "0-1000 €",
    size = 10
)
# 后续原有代码保持不变...

补充说明

  • 调整inset_axes()的参数可灵活控制内嵌子图的位置和大小,比如[0.1, 0.1, 0.4, 0.4]会把内嵌子图放在父轴左下角,占父轴40%的宽高。
  • 内嵌子图拥有和普通子图完全一致的API,可正常绘制图形、设置标签、添加注释等。
  • 该方法完全兼容你当前的tkinter+matplotlib框架,不会影响原有布局的渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:25:20