2014-12-22 9 views
6

Ich kratze mich am ganzen Kopf für ein scheinbar einfaches Problem. Ich versuche gerade die Kopfbreite eines Pfeils in Matplotlib einzustellen.Matplotlib Unbekannte Eigenschaft "headwidth" und "head_width"

Hier ist ein Arbeitscode:

import numpy as np 
import matplotlib.pyplot as plt 
t = np.linspace(0,2*np.pi,500) 
y = np.sin(t) 

fig = plt.figure(figsize=(10,5)) 
ax = fig.add_subplot(111) 
ax.plot(t,y) 

ax.annotate('', xy=(1, -1), xytext=(2, 0), 
arrowprops=dict(arrowstyle='<->', facecolor='black')) 

Sine plot with double-headed arrow

Und es zeichnet einen gut aussehenden Doppelpfeil, wie dargestellt. Nun, wenn ich die headwidth, indem Sie ändern wollen:

ax.annotate('', xy=(1, -1), xytext=(2, 0), 
arrowprops=dict(arrowstyle='<->', facecolor='black',headwidth=10)) 

oder

ax.annotate('', xy=(1, -1), xytext=(2, 0), 
arrowprops=dict(arrowstyle='<->', facecolor='black',head_width=10)) 

Der Fehler zurückgegeben:

AttributeError: Unknown property headwidth 

oder

AttributeError: Unknown property head_width 

Es ist wie ich scheint kann über Google keine Ressourcen finden, welche Addr Es besteht dieses einfache Problem. Gibt es einen Ausweg?

Vielen Dank für Ihre Zeit und Aufmerksamkeit!

+0

Was ist Axt? Sie vermissen eine Definition von ax im Code. –

+0

Vielen Dank für den Kopf! Ich habe es einfach hinzugefügt. Entschuldigung an alle für das fehlende Stück! –

+0

arrowprops = dict (arrowstyle = '<->', facecolor = 'schwarz', head_width = 10) ist nur eine normale Wörterbuchinitialisierung. Es sollte keinen Fehler geben. Ich brauche Ihren vollständigen Code, um das Problem erneut zu lösen. –

Antwort

10

Wenn Sie eine arrowstyle in Ihrem arrowprops dict angeben, erhalten Sie in Instanz eines FancyArrowPatch statt YAArrow, die unterschiedliche Keywords nimmt (aber Sie wussten wahrscheinlich, dass Ihr Versuch gegeben head_width zu verwenden). In der Dokumentation ist nicht einzusehen, dass Sie bei der Angabe des Pfeilstils, der über Standardkopfeinstellungen usw. verfügt, diese speziellen Einstellungen in der Pfeilstilzeichenfolge ändern. Dies ist die relevante Zeile aus der Dokumentation here (Hervorhebung von mir):

Der Pfeilstil beschreibt, wie der Phantasiepfeil gezeichnet wird. Dies kann eine Zeichenfolge der verfügbaren Pfeilstilnamen sein, mit optionalen durch Kommas getrennten Attributen oder einer der ArrowStyle-Instanzen.

Wenn Sie Ihr Wörterbuch der folgenden es funktioniert ändern:

arrowprops=dict(arrowstyle='<->, head_width=10', facecolor='black') 

Beachten Sie, dass die head_width Spezifikation in der Kette ist nach dem Stil ein Komma folgen. Beiseite: 10 ist eine ziemlich große Zahl für diesen .... 0.5 könnte besser sein!

+2

Wow tolle Sachen, @Ajean! Das ist eine * subtile * Dokumentation! Ich konnte meinen Kopf nicht dazu bringen, bis du darauf hingewiesen hast. Jetzt kann ich meine Pfeile bearbeiten! Danke für die Rettung meines Tages !!!!! –

Verwandte Themen