为matplotlib文本设置固定位置

时间:2016-05-14 07:59:51

标签: python text matplotlib position

(虽然有几个问题与我的问题类似,但几乎所有问题都与文本框,图例和注释有关。)

使用循环,我想显示32个属性的特定信息:左边的直方图和右边的统计数据。

处理一个属性非常简单,我为文本位置设置了x,y并且它是​​:

#Histogram
sns.distplot(n1, kde=True)#fit=stats.beta)
plt.title('Histogram')
plt.xlabel('Duration')
plt.xticks(np.arange(0, max(n1)+1, 0.5))

#Statistics (There are 13 in total)
plt.text(1.85,5,'Standard Time: %6.4f'%(ST.iloc[j,0]))
plt.text(1.85,5,'Median: %6.4f'%(medmed))
plt.text(1.85,4.65,'Variance from ST: %6.2f '%(Totvarval))
plt.text(1.85,4.3,'Standard Deviation: %6.4f'%(np.std(n1)))

问题是当我为所有属性创建循环时,给定每个属性的不同范围,文本位置相对变化会导致这样的结果:

Example for 2 attributes

我知道应该有办法解决协调问题,但我无法在文档中找到它。

1 个答案:

答案 0 :(得分:1)

传递给pyplot.text的坐标是数据坐标(如the documentation指出)。这意味着文本的绝对(像素)坐标取决于绘图轴的X和Y范围。如果要指定相对于轴本身的位置而不是数据,则必须转换坐标,例如:

x0, xmax = plt.xlim()
y0, ymax = plt.ylim()
data_width = xmax - x0
data_height = ymax - y0
plt.text(x0 + data_width * 1.5, y0 + data_height * 0.5, 'Some text')