我正在尝试将文字添加到与图例相邻的位置。这是我尝试过的:
import matplotlib.pyplot as plt
x = y = [1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x,y)
leg = ax.legend(['line 1'], loc=6, frameon=False)
plt.draw()
p = leg.get_window_extent()
ax.annotate('Annotation Text', (p.p0[0], p.p1[1]), (p.p0[0], p.p1[1]),
xycoords='figure pixels', zorder=9)
plt.show()
这正是Get Matplotlib legend location?中stackoverflow问题中包含的脚本。当我运行完全相同的脚本时,我会产生不同的结果。当我运行这个脚本时,字符串" Annotation Text"出现在图的左下角。
对于记录,运行此脚本时p的值为Bbox(x0=0.0, y0=0.0, x1=1.0, y1=1.0)
。
如何获得图例的坐标,最好是轴坐标,即。 ax.transAxes?
我正在使用matplotlib 1.5.0和python 2.7
答案 0 :(得分:1)
您可以使用inverse_transformed
将图像像素转换为轴分数:
import matplotlib.pyplot as plt
x = y = [1,2,3,4,5]
fig, ax = plt.subplots()
ax.plot(x,y)
leg = ax.legend(['line 1'], loc=6, frameon=False)
fig.canvas.draw()
p = leg.get_window_extent().inverse_transformed(ax.transAxes)
ax.annotate('Annotation Text', (p.p0[0], p.p1[1]), xycoords='axes fraction')
这将产生这样的情节:
我也使用matplotlib 1.5.0和python 2.7,无论脚本执行多少次,我都会得到相同的图。