使用带有随机偏移的注释的随机散点图:
import matplotlib.pyplot as mpp
import random as rd
X = [1,3,2,5,4,2,3,1,2,3]
Y = [4,1,3,2,6,5,2,5,1,5]
L = ['A','B','C','D','E','F','G','H','I','J']
fig,ax = mpp.subplots()
ax.scatter(X,Y)
for i,txt in enumerate(L):
r1 = rd.choice([-10,5])
r2 = rd.choice([-10,5])
a = ax.annotate(txt,(X[i],Y[i]),size=8,textcoords='offset points',xytext=(r1,r2))
fig.show()
我试图找到那些注释的轴坐标,但我没有任何运气,文本实例的大多数变量奇怪地只返回偏移量:
print(ax.texts[0].xy)
print(ax.texts[0].xyann)
print(ax.texts[0]._x,ax.texts[0]._y)
print(ax.texts[0].get_position())
print(ax.texts[0].get_unitless_position())
print(ax.texts[0]._get_xy_display())
print(ax.texts[0].clipbox)
返回:
(1, 4)
(-10, 5)
-10 5
(-10, 5)
(-10.0, 5.0)
[-10. 5.]
None
我知道我可以使用这样的变换获得轴坐标:
ax.figure.canvas.draw()
bb = ax.texts[0].get_window_extent()
co = ax.transAxes.inverted().transform(bb)
但我更喜欢它,如果有直接获取它们的方式,特别是因为我无法相信轴坐标不会写在该文本实例中的某处,因为用户区和显示坐标在那里好。
答案 0 :(得分:0)
使用不同坐标系的整个想法,例如"偏移点"这里是在绘制相应的艺术家之前实际上不知道显示坐标。而且他们不需要被人知道。艺术家没有理由需要将其位置存储在其他坐标系中,然后是其变换 - 这是变换背后的想法。
所以回答这个问题:不,显示坐标不存储在任何地方,因此也不是轴坐标。
当然,您可以像使用get_window_extent()
一样要求计算它们,然后获取轴坐标应用逆轴变换。