2017-05-05 16 views
0

私は同じアノテーションで2点を注釈したいと思います。その1点の注釈から2点の点を指し示すようにしたいと思います。matplotlibの注釈の矢印の開始点を設定する方法は?

は、私は、次のコードを持っている:

import matplotlib.pyplot as plt 

plt.plot([1,2], [1,2], 'o') 
plt.xlim([0,3]) 
plt.ylim([0,3]) 

plt.annotate('Yet another annotation', xy=(1,1), 
       xytext=(1.5, .5), 
       arrowprops=dict(arrowstyle="->") 
      ) 
plt.annotate('Yet another annotation', xy=(2,2), 
       xytext=(1.5, .5), 
       arrowprops=dict(arrowstyle="->") 
      ) 

plt.show() 

あなたは結果の図に見ることができるように、(私は正確に同じ場所で2つの注釈を持っているので、それは最もエレガントな方法ではないかもしれませんが)、それは動作します。私は、しかし、それに不満を持っています

Annotation

:私は矢印が正確に同じ位置で開始させたいと思い、現在彼らは、注釈の中心から開始しているように見える、私はそれらを聞かせすることを好みます注釈の端のどこかから始めて、開始点が接続されるようにします。

どのように達成できますか?

答えて

2

矢印の開始点に注釈を付けることができます。私。 2つの矢印を注釈テキストがない同じ位置で開始させ、矢印のない第3の注釈を使用して、この開始点にテキストで注釈を付ける。

import matplotlib.pyplot as plt 

plt.plot([1,2], [1,2], 'o') 
plt.xlim([0,3]) 
plt.ylim([0,3]) 

plt.annotate("", xy=(1,1), xytext=(1.3, 2.5), 
       arrowprops=dict(arrowstyle="->")) 
plt.annotate('', xy=(2,2), xytext=(1.3, 2.5), 
       arrowprops=dict(arrowstyle="->")) 
plt.annotate('Some annotation', xy=(1.3, 2.5), 
       xytext=(1.3, 2.5) , va = "bottom", ha="center") 

plt.annotate("", xy=(1,1), xytext=(1.5, .5), 
       arrowprops=dict(arrowstyle="->",shrinkA=0)) 
plt.annotate('', xy=(2,2), xytext=(1.5, .5), 
       arrowprops=dict(arrowstyle="->",shrinkA=0)) 
plt.annotate('Yet another annotation', xy=(1.5, .5), 
       xytext=(1.5, .5) , va = "top", ha="left") 

plt.show() 

enter image description here

は、次の2つの矢印は、接続することができますそれをゼロに設定し、arrowpropsキーshrinkAは矢印の収縮を調整するために使用することができます。

+0

ありがとうございます! * vaは垂直アラインメント*であり、haは*水平アラインメント*であるか? – Alf

+1

それは正しいです。実際に 'horizo​​ntalalignment =" left "'を使うこともできますが、入力するのは非常に時間がかかります。 – ImportanceOfBeingErnest

関連する問題