2017-12-27 1386 views
0

我從arrow_simple_demo.py here我已經修改爲工作:如何使用kwargs在matplotlib.axes.Axes.arrow蟒蛇2.7

import matplotlib.pyplot as plt 

ax = plt.axes() 
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1) 

不過,我想改變線型使用kwarg衝向箭頭。箭頭文件表明這是可能的。 arrow docs

所以我試着給箭頭** kwargs參數導入:

kwargs = {linestyle:'--'} 

現在我的代碼如下所示:

import matplotlib.pyplot as plt 

ax = plt.axes() 
kwargs={linestyle:'--'} 
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, **kwargs) 

但結果是:

NameError: name 'linestyle' is not defined 

我想知道是否有人可以告訴我,如果我正確使用kwargs,並且是否需要t o從matplotlib的補丁類中導入補丁以使其工作。在kwargs列表上方的箭頭文檔中,「其他有效的kwargs(繼承自:class:Patch)」這個陳述讓我覺得這可能是必要的。我也一直在尋找補丁文檔來解決這個問題。 here

編輯:

代碼時,我通過了線型鍵作爲一個字符串,但我沒有得到我所期待的虛線箭頭線完成。

import matplotlib.pyplot as plt 
ax = plt.axes() 
kwargs={'linestyle':'--'} 
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, **kwargs) 

見圖片:

arrow plot solid line

回答

0

kwargs字典的關鍵應該是一個字符串。在你的代碼中,python會查找一個不存在的名爲linestyle的對象。

kwargs = {'linestyle':'--'} 

不幸的是,這樣做並不足以產生預期的效果。行虛線,但問題在於箭頭是用閉合路徑繪製的,並且破折號疊加在另一個的頂部,這會取消效果。您可以通過繪製較粗的箭頭來查看虛線。

ax = plt.axes() 
kwargs={'linestyle':'--', 'lw':2, 'width':0.05} 
ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, **kwargs) 

enter image description here

如果你想要一個簡單的虛線箭頭,你必須使用一個簡單的箭頭,使用annotate

ax = plt.axes() 
kwargs={'linestyle':'--', 'lw':2} 
ax.annotate("", xy=(0.5, 0.5), xytext=(0, 0), 
    arrowprops=dict(arrowstyle="->", **kwargs)) 

enter image description here

+0

哦,這樣一個簡單的錯誤!代碼現在完成,但出於某種原因仍然是一條堅實的線? – AF2k15

+0

請參閱我的編輯以反映您的建議。你能否確認你的系統上的箭頭線仍然穩定?它仍然顯示我的堅實。 – AF2k15

+0

在我的回答中查看更多信息 –