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

Aar*_*ron 1 python matplotlib

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

Mol*_*lly 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()
Run Code Online (Sandbox Code Playgroud)

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

用不同坐标系绘制的点

如果你真的需要轴的位置,你可以得到它 ax.get_position()