在matplotlib中找到图像上单击点的位置

时间:2014-06-30 14:55:35

标签: python matplotlib

我正在尝试查找用户点击图片的点的坐标。点击处理程序将告诉我相对于图的点击位置。但是,图像绘制在偏离图边界的轴内。有没有办法找出轴原点相对于图形原点的位置?

1 个答案:

答案 0 :(得分:5)

您可以使用transforms从图形坐标转换为数据坐标或轴坐标。有一个教程here。要将图形坐标转换为数据坐标,您可以执行以下操作:

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()

用数据坐标绘制的红色圆圈与用图形坐标绘制的绿色星星位于相同的位置。

points plotted with different coordinate systems

如果您确实需要轴的位置,可以使用ax.get_position()

来获取它