2014-12-22 14 views
6

Sto graffiando la mia testa dappertutto per un problema apparentemente facile. Sto cercando di regolare la larghezza di una freccia in Matplotlib.Matplotlib Proprietà sconosciuta "headwidth" e "head_width"

Ecco un codice di lavoro:

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

E traccia una freccia a due punte di bell'aspetto come mostrato. Ora, quando voglio alterare il headwidth facendo:

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

o

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

L'errore riscontrato è:

AttributeError: Unknown property headwidth 

o

AttributeError: Unknown property head_width 

Sembra che io non riesce a trovare alcuna risorsa tramite Google che addr questo semplice problema C'è una via d'uscita?

Grazie mille per il vostro tempo e attenzione!

+0

Cos'è l'ascia? Ti manca una definizione di ascia nel codice. –

+0

Grazie per l'attenzione! L'ho appena aggiunto. Scusa a tutti per il pezzo mancante! –

+0

arrowprops = dict (arrowstyle = '<->', facecolor = 'black', head_width = 10) è solo una normale inizializzazione del dizionario. Non ci dovrebbero essere errori. Ho bisogno del tuo codice completo per ripresentare il problema. –

risposta

10

Quando si specifica un arrowstyle nel vostro arrowprops dict, si ottiene in caso di un FancyArrowPatch piuttosto che YAArrow, che assume diverse parole chiave (ma, probabilmente sapeva che dato il tuo tentativo di utilizzare head_width). Ciò che è poco intuitivo dalla documentazione è che quando si specifica lo stile della freccia, che ha le impostazioni predefinite della testa, e così via, si modificano quelle impostazioni particolari nella stringa dello stile di freccia. Questa è la linea pertinente dalla documentazione here (emphasis mine):

Lo stile freccia descrive come verrà disegnata la freccia. Può essere una stringa dei nomi di stili di freccia disponibili, con attributi separati da virgola o una delle istanze di ArrowStyle.

Se si cambia il dizionario al seguente funzionerà:

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

Si noti che la specifica head_width è nella stringa a seguito di una virgola dopo lo stile. A parte: 10 è un numero piuttosto grande per quello .... 0.5 potrebbe essere migliore!

+2

Wow grandi cose, @Ajean! Questa è una * sottile documentazione *! Non potevo capirlo fino a quando non l'hai fatto notare. Ora posso modificare le mie frecce! Grazie per aver salvato la mia giornata !!!!! –

Problemi correlati