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

如何在Matplotlib的3D投影绘图边距外添加图片缩略图?

在Matplotlib 3D图边距外添加本地图片缩略图

没问题!要在Matplotlib的3D绘图边距外部添加本地PNG/JPEG格式的图片缩略图,咱们可以用OffsetImage配合AnnotationBbox来实现——这个方法能精准控制图片的位置,比直接用figimage更灵活。下面是修改好的完整代码,我会拆解关键步骤:

完整实现代码

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
from PIL import Image

# 全局设置:调整图例字体大小
mpl.rcParams['legend.fontsize'] = 10

# 创建画布和3D坐标轴
fig = plt.figure(figsize=(10, 8))
ax = fig.gca(projection='3d')

# 绘制原有3D参数曲线
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()

# --------------------- 添加本地图片的核心代码 ---------------------
# 1. 加载本地图片(替换成你的图片路径,支持PNG/JPG)
local_img_path = "your_image.png"  # 或 "your_image.jpg"
img = Image.open(local_img_path)
# 按比例缩小图片,避免尺寸过大(这里设置最大边为100像素)
img.thumbnail((100, 100))

# 2. 创建Matplotlib可识别的偏移图像对象
offset_image = OffsetImage(img, zoom=1)
offset_image.image.axes = ax  # 关联到3D轴

# 3. 定位图片到边距外部
# xy=(1.1, 0.5):用轴比例坐标,1是轴的右边界,1.1就是外部;0.5是垂直居中
# xycoords='axes fraction':基于轴的比例定位
# frameon=False:去掉图片的边框
annotation_box = AnnotationBbox(
    offset_image, (1.1, 0.5),
    xycoords='axes fraction',
    boxcoords="offset points",
    pad=0,
    frameon=False
)
ax.add_artist(annotation_box)

# 4. 调整画布边距,避免图片被截断
plt.subplots_adjust(right=0.8)  # 右侧留足够空间放图片

# 显示图形
plt.show()

关键步骤说明

  • 导入额外模块:需要PIL.Image读取本地图片,matplotlib.offsetbox里的工具类来处理图片的偏移和定位。
  • 图片预处理:用thumbnail()按比例缩小图片,防止图片过大挤占绘图空间;你可以根据需求调整缩略图的尺寸。
  • 精准定位:AnnotationBbox的xy参数用轴比例坐标(0-1对应轴的范围,超出这个范围就是边距外部):
    • 右侧外部:(1.1, 0.5)
    • 左侧外部:(-0.2, 0.5)
    • 顶部外部:(0.5, 1.1)
  • 边距调整:plt.subplots_adjust()用来调整画布的边距,确保图片不会被窗口截断,比如right=0.8就是把右侧20%的空间留给图片。

额外扩展

如果想添加多张图片,只需要重复“加载图片→创建OffsetImage→创建AnnotationBbox→添加到轴”的步骤,修改不同的xy坐标即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:44:44