2016-07-31 8 views
4

Ich möchte den Kopf eines Pfeils in einer Anmerkung ändern (matplotlib), aber es funktioniert nicht, wenn es zusammen mit anderen Eigenschaften wie shrink verwendet wird. Es scheint, den Typ des erstellten Objekts zu ändern, indem man die eingestellten Parameter betrachtet.Wie ändere ich den Pfeilstil in Matplotlib Annotate?


Beispiel

Der folgende Code zeigt zwei Arten von Annotation Pfeile.

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


Problem

Ich habe versucht, den Pfeil Typ zusammen mit den anderen Eigenschaften in der ersten Anmerkung wie folgt festgelegt:

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

AttributeError: Unknown property shrink 

Warum funktioniert es nicht?

Wie ändere ich den Pfeilstil einer Anmerkung?

Related question


Ich verwende:

Python: 3.4.3 + numpy: 1.11.0 + matplotlib: 1.5.1

Antwort

1

Vom matplotlib documentation „, wenn das Wörterbuch Hat eine Taste einen Pfeilstil, wird eine FancyArrowPatch-Instanz mit dem angegebenen Wörterbuch erstellt und gezeichnet. Andernfalls wird eine YArrow-Patch-Instanz erstellt und gezeichnet. "

Wie Sie im selben Link sehen können, ist shrink ein gültiger Schlüssel für YAArrow, aber nicht für FancyArrowPatch.