>>> import matplotlib
>>> matplotlib.__version__
'0.99.1.1'
el código siguiente ejecuta:matplotlib anotar xycoords = ('datos', 'ejes fracción') => TypeError: objeto 'NoneType' no es iterable
import matplotlib.pyplot as plt
plt.figure()
ax=plt.axes([.1, .1, .8, .8])
ax.annotate('++++', xy=(.5,.2), xycoords='data')
ax.annotate('aaaa', xy=(.5,.4), xycoords='axes fraction')
#ax.annotate('bbbb', xy=(.5,.6), xycoords=('data', 'axes fraction'))
plt.show()
pero el hacha comentado-out. annotate da un error:
TypeError: 'NoneType' object is not iterable
es código supuestamente correcta de acuerdo con los documentos actuales:
From: http://matplotlib.sourceforge.net/users/annotations_guide.html
4. A tuple of two coordinate specification.
The first item is for x-coordinate and
the second is for y-coordinate.
For example,
annotate("Test", xy=(0.5, 1), xycoords=("data", "axes fraction"))
0.5 is in data coordinate, and 1 is in normalized axes coordinate.
alguna idea sobre lo que está pasando?
EDIT: desde la primera publicación, he estado buscando una solución y descubrí otro problema. Cuando xycoords = 'data', la anotación aún se recorta si cae fuera de los ejes, incluso con clip_on = False. Aquí está el código que demuestra esto:
import matplotlib.pyplot as plt
plt.figure()
ax=plt.axes([.1, .1, .8, .8])
ax.annotate('cccc', xy=(.3, .5), xycoords='data', clip_on=False)
ax.annotate('dddd', xy=(.3,-.1), xycoords='data', clip_on=False)
ax.annotate('eeee', xy=(.6,-.1), xycoords='axes fraction', clip_on=False)
plt.show()
¿Qué versión de matplotlib estás usando? Tus dos ejemplos funcionan perfectamente para mí ... –
gracias Joe, matplotlib .__ version__ '0.99.1.1' ... ¿qué versión estás usando? –
@mike - '1.0.1' Creo que la parte" tupla de dos coordenadas especificadas "del kwarg' xcoords' se agregó en matplotlib 1.0. Vea la adición en 2010-02-25 en http://matplotlib.sourceforge.net/_static/CHANGELOG. El último problema es probablemente un error que se corrigió en algún momento. (De hecho, apostaría a que era un error que solo existía en '0.99.1'. No creo que pase desapercibido por mucho tiempo.) –