2016-07-31 92 views
4

我想更改註釋中的箭頭(matplotlib),但在與其他屬性(如shrink)一起使用時不起作用。它似乎通過查看參數集來改變所創建的對象的類型。如何更改matplotlib註釋中的箭頭樣式?


下面的代碼顯示兩種類型的註釋的箭頭。

import matplotlib.pyplot as plt 

import numpy as np 

xx = np.linspace(0,8) 
yy = np.sin(xx) 
fig, ax = plt.subplots(1,1, figsize=(8,5)) 
ax.plot(xx,yy) 
ax.set_ylim([-2,2]) 

ax.annotate('local\nmax', xy=(np.pi/2, 1), xytext=(1,1.5), ha='center', \ 
      arrowprops={'shrink':0.05}) 
ax.annotate('local\nmin', xy=(np.pi*3/2, -1), xytext=(5,0), ha='center', \ 
      arrowprops={'arrowstyle':'->'}) 

enter image description here


問題

我試圖設置的箭頭與其它性質在所述第一註釋這樣一起輸入:

ax.annotate('other\nmax', xy=(np.pi*5/2, 1), xytext=(7,1.5), ha='center', \ 
      arrowprops={'arrowstyle':'->', 'shrink':0.05}) 

然而,該行會引發錯誤:

AttributeError: Unknown property shrink 

爲什麼它不工作?

如何更改註釋的箭頭樣式?

Related question


我使用:

蟒蛇:3.4.3 + numpy的:1.11.0 + matplotlib:1.5.1

回答

1

matplotlib documentation,「如果字典有一個關鍵的箭頭風格,一個FancyArrowPatch實例用給定的字典創建並繪製,否則創建並繪製一個YAArrow補丁實例。「

正如您在同一鏈接中看到的,shrinkYAArrow的有效密鑰,但不是FancyArrowPatch