使用matplotlib
,我想在图例下方放置一个文本框,其中包含有关该图的一些注释。我的传说是在右边的轴之外。我的计划是在图的参考框架中找到图例的位置,然后使用图中的text
方法来放置我的笔记。但是,我无法计算如何获取这些图例坐标。任何建议或替代计划都将不胜感激。
答案 0 :(得分:4)
显然,只有渲染后才会读取图例的位置。然后坐标将以像素为单位。然后可以使用fig.add_axes
创建一个新轴,它将使用图例的坐标和图形的尺寸位于图例下方。这是一个例子:
from matplotlib.pyplot import subplots
fig,ax = subplots()
fig.subplots_adjust(right=0.75)
ax.plot([0,1],'.-',label="line1")
ax.plot([0.1,1.1],'.-',label="line2")
leg = ax.legend(bbox_to_anchor=(1.05, 1),loc=2, borderaxespad=0)
fig.canvas.draw() # this draws the figure
# which allows reading final coordinates in pixels
leg_pxls = leg.get_window_extent()
ax_pxls = ax.get_window_extent()
fig_pxls = fig.get_window_extent()
# Converting back to figure normalized coordinates to create new axis:
pad = 0.025
ax2 = fig.add_axes([leg_pxls.x0/fig_pxls.width,
ax_pxls.y0/fig_pxls.height,
leg_pxls.width/fig_pxls.width,
(leg_pxls.y0-ax_pxls.y0)/fig_pxls.height-pad])
# eliminating all the tick marks:
ax2.tick_params(axis='both', left='off', top='off', right='off',
bottom='off', labelleft='off', labeltop='off',
labelright='off', labelbottom='off')
# adding some text:
ax2.text(0.1,0.1,"some text\nabout the\nlines")
产生这个数字:
如果不需要,可以轻松关闭相框。