在matplotlib中查找点击图像的点的位置

1 投票
1 回答
1697 浏览
提问于 2025-04-18 11:35

我想找到用户点击图片时的坐标。点击处理程序会告诉我点击的位置相对于图形的位置。不过,这张图片是在一个和图形边界有偏移的坐标轴内绘制的。有没有办法知道这个坐标轴的原点相对于图形原点的位置呢?

1 个回答

5

你可以通过使用变换,将图形坐标转换为数据坐标或轴坐标。这里有一个教程。如果你想把图形坐标转换为数据坐标,可以参考下面的做法:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot((1,2,3,4))

# Point in figure coordinates
ptsFig = (0.5,0.5) 

# Convert figure coordinates to display coordinates
ptsDisp = fig.transFigure.transform(ptsFig)

# Convert display coordinates to data coordinates
inv = ax.transData.inverted()
ptsData = inv.transform(ptsDisp)

# Plot point in data coordinates
ax.plot(ptsData[0], ptsData[1], 'ro', ms = 20)
# Use the figure transform to plot the same point using figure cooridnates. 
ax.plot(ptsFig[0], ptsFig[1], 'g*', ms = 20, transform = fig.transFigure)

plt.show()

用数据坐标绘制的红色圆圈和用图形坐标绘制的绿色星星在同一个位置。

不同坐标系统绘制的点

如果你需要获取坐标轴的位置,可以使用 ax.get_position()

撰写回答