matplotlib文本框自动定位

时间:2014-04-16 14:50:19

标签: matplotlib

我想在文本框中放置关键字参数,例如与图例' loc'选项,即'左上角','右上角','右下角','左下角'。 基本目的是将文本框与图例对齐。 我在这里找到了一个建议:automatically position text box in matplotlib但是它仍然使用我必须使用的坐标来获得我想要的东西,特别是如果我想把它放在绘图区域的右边,这取决于文本的长度在盒子里。除非我可以将文本框的右角之一设置为坐标的参考。

2 个答案:

答案 0 :(得分:3)

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

automatically position text box in matplotlib

简而言之:

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

每个loc号对应于轴内的位置,例如loc = 2是"左上"。完整的职位列表如下:http://matplotlib.org/api/offsetbox_api.html

答案 1 :(得分:1)

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

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()

另一方面,如果您只需要像右边you can set the horizontal alignment to right那样定义文本的位置:

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