我已经尝试实现我所能找到的有关删除或更新箭头/注释/补丁的所有内容,但似乎没有任何效果。
以下是代码的重要部分:
for i in xrange(lim):
if 'arrowprops' in kwargs:
kwap = kwargs.pop('arrowprops')
ap = {'patchA':text} # Ensure arrow is clipped by the text
ap.update(kwap) # Add arrowprops from kwargs
bboxes = get_bboxes(texts, r, (1, 1), ax) #Will give error if you didn't put arrows
for j, (bbox, text) in enumerate(zip(bboxes, texts)):
drawArrow = ax.annotate("", # Add an arrow from the text to the point
xy = (orig_xy[j]),
xytext=get_midpoint(bbox),
arrowprops=ap,
*args, **kwargs)
drawArrow.remove() #removed arrows otherwise old arrows remain
plt.draw()
这是从https://github.com/Santosh-Gupta/adjustText/blob/master/adjustText/init.py此处的第524行到645行
每次进入循环时,箭头端点的位置都不同,但是只是绘制了一个新箭头而没有删除旧箭头,因此图像看起来像这样
我看到.remove()是删除注释的正确方法,并且直到再次绘制绘图才更新它,因此这就是为什么我放入plt.draw()
这很难调试/测试/隔离,因为这是我要更改的python软件包。但是也许还有其他可以解决的变通办法。