为什么我不能指定xycoords ='轴分数'?

时间:2015-11-17 03:13:54

标签: python matplotlib

为什么我不能根据thistext()中指定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()

2 个答案:

答案 0 :(得分:2)

正如@tcaswell在评论中所说,xycoordsannotate的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')