matplotlib文本框自动定位

matplotlib文本框自动定位,matplotlib,Matplotlib,我想定位一个包含关键字参数的文本框,这些关键字参数与图例“loc”选项类似,即“左上”、“右上”、“右下”、“左下”。 基本目的是将文本框与图例对齐。 我在这里找到了一个建议:但它仍然使用坐标,我必须使用坐标来获得我想要的,特别是如果我想根据输入框中文本的长度将其放置在绘图区域的右侧。除非我可以将文本框的右角之一设置为坐标的参考。设置文本相对于图例的位置如何?诀窍是,要找到图例的位置,您必须先绘制图例,然后获取图例。下面是一个例子: import matplotlib.pyplot as plt

我想定位一个包含关键字参数的文本框,这些关键字参数与图例“loc”选项类似,即“左上”、“右上”、“右下”、“左下”。 基本目的是将文本框与图例对齐。
我在这里找到了一个建议:但它仍然使用坐标,我必须使用坐标来获得我想要的,特别是如果我想根据输入框中文本的长度将其放置在绘图区域的右侧。除非我可以将文本框的右角之一设置为坐标的参考。

设置文本相对于图例的位置如何?诀窍是,要找到图例的位置,您必须先绘制图例,然后获取图例。下面是一个例子:

import matplotlib.pyplot as plt
from numpy import random

# Plot some stuff
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(random.rand(10))

# Add a legend
leg = ax.legend('line', loc = 'upper right')

# Draw the figure so you can find the positon of the legend.
plt.draw()  

# Get the Bbox
bb = leg.legendPatch.get_bbox().inverse_transformed(ax.transAxes)

# Add text relative to the location of the legend.
ax.text(bb.x0, bb.y0 - bb.height, 'text', transform=ax.transAxes)
plt.show()
另一方面,如果只需要从右侧定义文本的位置,如下所示:

plt.text(x, y, 'text', ha = 'right')

可以使用matplotlib的AnchoredText执行此操作。如图所示:

简言之:

from matplotlib.offsetbox import AnchoredText
anchored_text = AnchoredText("Test", loc=2)
ax.plot(x,y)
ax.add_artist(anchored_text)

每个loc编号对应于轴内的一个位置,例如loc=2为“左上方”。此处给出了完整的位置列表:

我尝试了你的第一个建议,但我在左侧底部得到了“文本”,在绘图区域之外,在图形窗口中得到了一半。第二个是关于设置文本框的定位点的解决方案,但我刚刚意识到它不能满足我的需要。第一个解决方案似乎是正确的,我将搜索一下这个。我为ax.text选择了这些坐标作为示例。你应该能够用bb.x0、bb.y0、bb.height和bb.width做一些数学运算,以得到你想要的位置。leg.legendPatch.get_bbox().inverse_transAxes的四个数字是什么?四个角?我试过用一个图例“左上角”,四个数字都是负数!要更改字体大小,请使用此
AnchoredText(“Test”,loc=2,prop={'size':12})