擅长:python、mysql、java
<p>我想正确的解决方案将需要太多的努力-子类化_annotationbase并添加对多个箭头的支持。但是我通过添加<code>alpha=0.0</code>来消除影响视觉外观的第二个注释的问题。因此,如果没有人能提供更好的解决方案:</p>
<pre><code>def my_annotate(ax, s, xy_arr=[], *args, **kwargs):
ans = []
an = ax.annotate(s, xy_arr[0], *args, **kwargs)
ans.append(an)
d = {}
try:
d['xycoords'] = kwargs['xycoords']
except KeyError:
pass
try:
d['arrowprops'] = kwargs['arrowprops']
except KeyError:
pass
for xy in xy_arr[1:]:
an = ax.annotate(s, xy, alpha=0.0, xytext=(0,0), textcoords=an, **d)
ans.append(an)
return ans
ax = plt.gca()
ax.plot([1,2,3,4],[1,4,2,6])
my_annotate(ax,
'Test',
xy_arr=[(2,4), (3,2), (4,6)], xycoords='data',
xytext=(30, -80), textcoords='offset points',
bbox=dict(boxstyle='round,pad=0.2', fc='yellow', alpha=0.3),
arrowprops=dict(arrowstyle="-|>",
connectionstyle="arc3,rad=0.2",
fc="w"))
plt.show()
</code></pre>
<p>结果图片:
<img src="https://i.stack.imgur.com/h1Cav.png" alt="enter image description here"/></p>