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

如何在Matplotlib中基于窗口坐标添加带数字的圆形

用窗口坐标在Matplotlib中添加带文本的圆形

嘿,我明白你的需求啦——你想在Matplotlib图里用窗口相对坐标(比如X=0.2、Y=0.9这种0到1之间的比例值)放置带文本的圆形,而不是依赖坐标轴的数据坐标。这其实很容易实现,关键是要切换到figure坐标系统,也就是整个绘图窗口的相对坐标。

下面是结合你现有代码的完整解决方案:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle

# 你的原有绘图代码
t = np.arange(0, 10, 0.01)
y1 = np.sin(2 * np.pi * 10 * t)  # 这里用np.pi替代3.14会更准确哦
plt.plot(t, y1)

# 获取当前figure对象
fig = plt.gcf()

# 创建圆形:用窗口坐标(0-1范围)
# 参数说明:(x, y)是圆心的窗口坐标,radius是窗口宽度的比例(比如0.05就是5%宽度)
circle = Circle((0.2, 0.9), radius=0.05, color='lightblue', alpha=0.7)
# 设置坐标变换为figure的坐标系统,确保用窗口坐标定位
circle.set_transform(fig.transFigure)
# 将圆形添加到figure中
fig.add_artist(circle)

# 在圆形中心添加文本:同样使用窗口坐标
plt.text(0.2, 0.9, "Hello", ha='center', va='center', transform=fig.transFigure)

plt.show()

关键要点解释:

  • fig.transFigure:这个变换会把你的坐标转换成相对于整个绘图窗口的比例值,X和Y的范围都是0到1(0对应窗口左/底部,1对应右/顶部),完全脱离坐标轴数据的限制。
  • 圆形的半径:因为用的是窗口坐标,半径值也是窗口宽度的比例,比如0.05就代表圆形直径是窗口宽度的10%,不管窗口怎么缩放,圆形的相对大小和位置都保持一致。
  • 文本对齐:设置ha='center'(水平居中)和va='center'(垂直居中)能让文本正好居中在圆形里,避免偏移。

这样你就能精准地在窗口的任意相对位置放置带文本的圆形啦,完全不受坐标轴数据的影响~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:52