首页 > 解决方案 > 如何在 matplotlib 中绘制图形坐标?

问题描述

我想检索一个散点的图形坐标并在该点精确设置第二个点 - 仅基于图形坐标而不是轴或数据坐标。

我的方法,在蓝点上绘制红十字(最后一行),还行不通:

import matplotlib.pyplot as plt
fig, ax0 = plt.subplots()

point0 = ax0.scatter(1, 1)
ax0.set_xlim(0, 2)
ax0.set_ylim(0, 2)

bbox = ax0.get_position()
ax1 = fig.add_axes(bbox)

ax1.set_xlim(0, 2)
ax1.set_ylim(0, 2)
ax1.axis('off')

point1 = ax1.scatter(1, 0.5, marker='x')

x, y = ax0.transData.transform((1, 1))
print('x={}'.format(x), 'y={}'.format(y))
ax1.scatter(x, y, marker='x', color='r', transform=fig.transFigure)

打印:x=221.4 y=144.72

坐标

对于如何解决此问题的任何提示,我将不胜感激。

标签: pythonmatplotlib

解决方案


事实证明,转换操作解决了这个问题:

import matplotlib.pyplot as plt
fig, ax0 = plt.subplots()

point0 = ax0.scatter(1, 1)
bbox = ax0.get_position()
ax0.set_xlim(0, 2)
ax0.set_ylim(0, 2)
mytrans = ax0.transData + ax0.transAxes.inverted()
x, y = mytrans.transform((1, 1))

ax1 = fig.add_axes(bbox)
ax1.axis('off')
ax1.set_xlim(0, 2)
ax1.set_ylim(0, 2)

print('x={}'.format(x), 'y={}'.format(y))
ax1.scatter(x, y, marker='x', color='r', transform=ax1.transAxes)

坐标已解决

该点需要从数据转换为轴坐标。


推荐阅读