我试图在图的底部添加一个签名栏。我希望能够在没有使用文本x和y值并添加空字符串的所有手工操作的情况下完成。我正在考虑使用注释,但我有几个问题:
StatelessWidget
我的主要问题: 我希望酒吧穿过图的整个宽度。我可以添加空白文本来扩展栏,但我希望自动化的东西,所以我不必为不同的场景手动完成。 2.我想把杆移动一点点,而不会使杆消失或裁剪。
任何建议都会很棒!
答案 0 :(得分:1)
调整文本的边界框有点棘手。此问题中显示了执行此操作的选项:How do I make the width of the title box span the entire plot?
试图避免这种情况,一个更简单但不太自动的解决方案是在图的下半部分创建一个矩形并添加一些文本,使其看起来像文本位于矩形中。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)
ax.set_ylim(-2,2)
ax.set_xlabel('Angle')
def signaturebar(fig,text,fontsize=10,pad=5,xpos=20,ypos=7.5,
rect_kw = {"facecolor":"grey", "edgecolor":None},
text_kw = {"color":"w"}):
w,h = fig.get_size_inches()
height = ((fontsize+2*pad)/72.)/h
rect = plt.Rectangle((0,0),1,height, transform=fig.transFigure, clip_on=False,**rect_kw)
fig.axes[0].add_patch(rect)
fig.text(xpos/72./h, ypos/72./h, text,fontsize=fontsize,**text_kw)
fig.subplots_adjust(bottom=fig.subplotpars.bottom+height)
signaturebar(fig,"This is my signature text")
plt.show()