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

Matplotlib能否绘制自定义图形(如望远镜/眼睛)用于轨道捕获点标注?

Matplotlib实现自定义图形标注轨道捕获点

完全可以用Python + Matplotlib实现你的需求,下面提供两种常用的落地方案:

方案一:用Matplotlib原生组件绘制矢量图形

如果是类似你示例的眼睛这类简单自定义图形,直接用Matplotlib的patches模块组合基础形状(椭圆、圆弧、多边形等)即可,这种方式生成的是矢量图,缩放不失真。

示例代码(在轨道图指定坐标(x,y)绘制眼睛标注):

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse, Arc

# 创建画布与坐标轴
fig, ax = plt.subplots()

# 假设轨道图已绘制完成,现在添加眼睛标注
x, y = 2, 3  # 捕获点坐标

# 绘制眼白(椭圆)
eye_white = Ellipse((x, y), width=0.8, height=1.2, facecolor='white', edgecolor='black')
ax.add_patch(eye_white)

# 绘制瞳孔(椭圆)
pupil = Ellipse((x, y), width=0.3, height=0.5, facecolor='black')
ax.add_patch(pupil)

# 绘制上眼睑(圆弧)
upper_lid = Arc((x, y+0.6), width=0.8, height=0.6, angle=0, theta1=0, theta2=180, color='black', linewidth=2)
ax.add_patch(upper_lid)

# 绘制下眼睑(圆弧)
lower_lid = Arc((x, y-0.6), width=0.8, height=0.6, angle=0, theta1=180, theta2=0, color='black', linewidth=2)
ax.add_patch(lower_lid)

# 适配坐标轴范围
ax.set_xlim(0, 5)
ax.set_ylim(0, 6)
plt.axis('equal')
plt.show()

方案二:导入外部图片作为标注

如果已经有现成的眼睛图片(比如你在Word中绘制的版本),可以直接导入图片并放置在指定位置,适合处理复杂图形。

示例代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# 创建画布与坐标轴
fig, ax = plt.subplots()

# 绘制轨道图(示例用简单曲线替代)
ax.plot([0, 1, 2, 3, 4], [0, 2, 3, 2, 0], color='blue', label='轨道')

# 读取眼睛图片(替换为你的图片本地路径)
eye_img = mpimg.imread('eye_example.png')
x, y = 2, 3  # 捕获点坐标
img_size = 0.5  # 图片显示尺寸

# 在指定位置放置图片(zorder确保图片在轨道图上层)
ax.imshow(eye_img, extent=[x - img_size, x + img_size, y - img_size, y + img_size], zorder=10)

# 调整坐标轴
ax.set_xlim(0, 4)
ax.set_ylim(0, 3)
plt.legend()
plt.show()

两种方案都可以灵活调整位置、大小和样式,完全满足轨道图中自定义捕获点标注的需求。

内容的提问来源于stack exchange,提问作者Projetos Programação

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:44:58