2016-06-14 27 views
2

私はこのスクリプトを実行する場合:matplotlibのの矢印とアスペクト比

import matplotlib.pyplot as plt 
import pylab as plab 

plt.figure() 
plt.plot([0,2], [2,0], color='c', lw=0.5) 
plt.plot([1,2], [2,1], color='k', lw=0.5) 
plt.arrow(1,1,0.5,0.5, head_width=0.1, width=0.01, head_length=0.1, color='r') 
plt.arrow(1.25,0.75,0.5,0.5, head_width=0.1, width=0.01, head_length=0.1, color='g') 

plab.axes().set_aspect(0.5) 

plt.show() 

を、私はこの取得: enter image description here を矢印の背中は、(1,2)から伸びている黒い線と面一にしていることに注意すること(2,1)。それは理にかなっていますが、私は矢尻の背を縦横比を変えずに尾に垂直にしたいと思っています。これはどうすればいいですか?

+0

あなたが尾を視覚的に垂直とはどういう意味ですか? – hashcode55

+0

私はまさに私が言ったことを意味します。つまり、分度器を取って画面に置き、頭の基線と尾の角度を測定する場合は、その角度を90度にします。 – Phys251

答えて

2

私はその問題を(ほとんど)悩まされており、たいてい矢印を描くのにannotate()を使用してしまいます。例えば、(...あなたのプロットと同じ結果に終わるために微調整の多くを欠く):

import matplotlib.pyplot as plt 
import pylab as plab 

plt.figure() 
ax=plt.subplot(211) 
plt.plot([0,2], [2,0], color='c', lw=0.5) 
plt.plot([1,2], [2,1], color='k', lw=0.5) 
plt.arrow(1,1,0.5,0.5, head_width=0.1, width=0.01, head_length=0.1, color='r') 
ax.set_aspect(0.5) 

ax=plt.subplot(212) 
plt.plot([0,2], [2,0], color='c', lw=0.5) 
plt.plot([1,2], [2,1], color='k', lw=0.5) 
ax.annotate("", 
      xy=(1.5, 1.5), xycoords='data', 
      xytext=(1, 1), textcoords='data', 
      arrowprops=dict(arrowstyle="-|>", 
          connectionstyle="arc3"), 
      ) 
ax.set_aspect(0.5) 

plt.show() 

enter image description here

関連する問題