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

如何为Matplotlib画布(子图外空白区域)设置图片背景?

给Matplotlib画布添加背景图片(子图后方空白区)

要实现子图后方的整个画布背景显示图片,你可以创建一个覆盖整个画布的底层轴,在这个轴上绘制图片,再让子图叠在它上方。具体步骤如下:

  • 先读取背景图片,可使用plt.imread()或者PIL的Image.open()
  • 创建覆盖全屏的轴,设置zorder=-1确保它在所有子图下方
  • 在这个轴上绘制图片,调整extent参数让图片适配画布尺寸
  • 隐藏背景轴的刻度和边框,避免影响视觉效果

示例代码:

import matplotlib.pyplot as plt

# 读取背景图片(替换成你的图片路径)
bg_img = plt.imread("background.jpg")

# 创建画布和子图
fig, axs = plt.subplots(2, 2, figsize=(8, 8))

# 创建覆盖整个画布的背景轴
bg_ax = fig.add_axes([0, 0, 1, 1])
bg_ax.set_zorder(-1)  # 把背景轴放在最底层

# 绘制背景图片,extent参数确保图片铺满画布
bg_ax.imshow(bg_img, extent=[0, 1, 0, 1], aspect="auto")

# 隐藏背景轴的刻度和边框
bg_ax.set_xticks([])
bg_ax.set_yticks([])
for spine in bg_ax.spines.values():
    spine.set_visible(False)

# 正常绘制子图内容(示例)
axs[0,0].plot([1,2,3], [4,5,1])
axs[0,1].scatter([0,1,2], [3,1,4])
axs[1,0].bar(["A","B","C"], [2,5,3])
axs[1,1].pie([30,20,50])

plt.show()

关键说明:

  • fig.add_axes([0,0,1,1]):四个参数分别对应轴的左、下、宽、高,取值范围0到1(画布比例),以此实现全屏覆盖。
  • zorder=-1:Matplotlib元素按zorder值排序,值越小越靠后,设置为-1可让所有子图(默认zorder=1)叠在背景上方。
  • aspect="auto":若图片与画布比例不一致,该参数会让图片自动拉伸铺满画布;若想保持图片比例,可移除该参数,但可能出现留白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:45:28