为什么我不能根据this在text()
中指定xycoords?我只想将文字放在图的左上角。但是,我不想使用默认的数据' COORDS。错误是:
AttributeError:未知属性xycoords
以下是示例代码:
import numpy as np
import math
import matplotlib.pyplot as plt
def f(a,x):
return a*x
def g(a,x):
return 5*a*x
const=[1,2,3]
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
colors=['r','b','g']
labels=[r'$a=1$',r'$a=2$',r'$a=3$']
xArray=np.linspace(0,2,20)
for i in const:
ax.plot(xArray,f(i,xArray),color=colors[i-1],label=labels[i-1])
ax.plot(xArray,g(i,xArray),color=colors[i-1],ls='--')
ax.text(-0.1, 1.1 ,'(a)',size=20,weight='bold',xycoords='axes fraction')
ax.legend(loc=0)
plt.show()
答案 0 :(得分:2)
正如@tcaswell在评论中所说,xycoords
是annotate
的kwarg,而不是text
。
要实现您的目标,您可以使用transform
kwarg。要使用轴分数坐标,请使用transform = ax.transAxes
。
来自text
的{{3}}:
默认转换指定文本在数据坐标中,或者,您可以在轴坐标中指定文本(0,0是左下角,1,1是上右上角)。下面的示例将文本放在轴的中心:
ax.text(0.5, 0.5,'matplotlib', horizontalalignment='center',
verticalalignment='center',
transform=ax.transAxes)
答案 1 :(得分:0)
那是因为matplotlib.text
!= matplotlib.pyplot.text
。
这是由于以下几行:
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
因此ax
指的是plt
matplotlib.pyplot
,即第二个链接。
以下内容可以正常使用ax.text(-0.1, 1.1 ,'(a)',size=20,weight='bold')