我正在尝试为文本添加背景,并将其覆盖在图形上。我这样做的方法是使用bbox
的{{1}}参数。
我的代码:
pyplot.text
输出:
如您所见,import matplotlib.pyplot as plt
plt.xlim(0.4,0.6)
plt.ylim(-0.1,0.1)
bbox = dict(facecolor='pink', alpha=0.2, edgecolor='red', boxstyle='square,pad=0.5')
plot,= plt.plot([0.4,0.6],[0,0])
text = plt.text(0.5, 0, 'foo goo', color='gold', size=50, bbox=bbox, horizontalalignment='center', verticalalignment='bottom')
plt.show()
仅考虑文本的底部,而忽略bbox的填充。是否有任何“本机”手段可以纠正此问题?如果没有,应该如何正确偏移坐标以补偿填充?
答案 0 :(得分:1)
此框的边距填充为50点字体字体的0.5倍。这意味着您要使文本从数据坐标中的位置偏移25点。
幸运的是,使用Annotation
代替Text
可以做到这一点。可以通过Annotation
完成创建.annotate
的工作,为此,它需要一个xytext
和一个textcoords
参数。
import matplotlib.pyplot as plt
plt.xlim(0.4,0.6)
plt.ylim(-0.1,0.1)
bbox = dict(facecolor='pink', alpha=0.2, edgecolor='red', boxstyle='square,pad=0.5')
plot,= plt.plot([0.4,0.6],[0,0])
text = plt.annotate('foo goo', xy=(0.5, 0), xytext=(0,0.5*50), textcoords="offset points",
color='gold', size=50, bbox=bbox, ha='center', va='bottom')
plt.show()