如何在matplotlib的annotate函数中设置箭头和文本之间的距离(padding)?有时候文本最后离箭头太近了,我想把它们移得远一点。
基本示例:
import matplotlib.pyplot as plt
plt.annotate('Here it is!',xy=(-1,-1),xytext=(0,0),
arrowprops=dict(arrowstyle='->',lw=1.5))
plt.xlim(-10,10)
plt.ylim(-10,10)
plt.show()
3条答案
按热度按时间2ledvvac1#
对于花哨的箭头,你可以使用
bbox
属性:这里的缺点是你不能在注解后面添加颜色(
facecolor="none"
是强制性的),否则箭头将总是粘在框架的边界上,它可能会很难看。高温加热
qnakjoqk2#
您可以在
arrowprops
字典中使用shrink
关键字参数,但不幸的是FancyArrowPatch
对象不支持它,因此您必须删除arrowstyle='->'
。shrink
给出的值是尖端/底部将远离xy
和xytext
坐标的百分比。zvokhttg3#
要完全控制距离,必须合并jrjc和Ffisegydd答案。
Bbox的
pad
属性定义了文本与其包含框之间的距离。箭头的shrink
属性是箭头末端与框之间的距离,而不是文本本身。此外,要将
shrink
与FancyArrowPatch
一起使用,必须单独定义它:shrinkA
表示起点(箭头的末端靠近文本),shrinkB
表示终点。从demo in Matplotlib's website:所以完整的答案是两者皆有:
示例: