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

最佳答案

您可以使用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()


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



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

关于python - 在matplotlib中找到图像上单击点的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24493011/

10-12 21:56