>>> import matplotlib
>>> matplotlib.__version__
'0.99.1.1'
运行以下代码:
import matplotlib.pyplot as plt
plt.figure()
ax=plt.axes([.1,.1,.8,.8])
ax.annotate('++++',xy=(.5,.2),xycoords='data')
ax.annotate('aaaa',.4),xycoords='axes fraction')
#ax.annotate('bbbb',.6),xycoords=('data','axes fraction'))
plt.show()
但注释掉的ax.annotate给出了一个错误:
TypeError: 'NoneType' object is not iterable
根据当前的文档,它应该是正确的代码:
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.
关于发生了什么的任何想法?
编辑:
自从第一次发帖以来,我一直在寻找一种解决方法,并发现了另一个问题.当xycoords =’data’时,即使使用clip_on = False,如果annotataion落在轴之外,它仍会被剪裁.以下代码演示了这一点:
import matplotlib.pyplot as plt
plt.figure()
ax=plt.axes([.1,.8])
ax.annotate('cccc',xy=(.3,.5),xycoords='data',clip_on=False)
ax.annotate('dddd',-.1),clip_on=False)
ax.annotate('eeee',xy=(.6,xycoords='axes fraction',clip_on=False)
plt.show()