2017-09-26 67 views
0

我对这两行有个疑问。我不完全理解它。关于ax.annotate的问题

%p.get_width(), (p.get_x() + p.get_width()/ 2., p.get_y())

正是它正在做什么? 是否有一种方法可以去除特殊值,例如0.这样所有数字都会显示,但0除外?或者用名字交换数字?

for p in ax.patches:     
    ax.annotate(("%1.f") % p.get_width(), (p.get_x() + p.get_width()/ 2., p.get_y()), fontsize = 2, xytext=(-3, 2),textcoords='offset pixels') 
+1

对于''%:见https://pyformat.info – Bart

回答

0

注释功能为您的图的某些功能添加文本(https://matplotlib.org/users/annotations.html)。在你的情况下,注释功能采用下列参数:

一)文字写入

("%1.f") % p.get_width() 

这是复杂的部分。 %用于格式化字符串。在你的情况下,%将被p.get_width()的值所取代。 1.f指定格式(在逗号后面带有一个数字的浮点数)。所以,如果p.get_width()的结果是1.23445,结果将是字符串“1.2”。你可以用一个没有问题的名字来改变这个号码。为了避免零值,我会检查上面的行。

b)该特征的坐标要注释

(p.get_x() + p.get_width()/ 2., p.get_y()) 

这仅仅是2表示的x坐标,并在形成Y坐标(X,Y浮子)

c)该字体大小注释

fontsize = 2 

d)的坐标在哪里写入注释

e)其他参数

textcoords='offset pixels' 
+2

* * “用逗号后一个数字的浮动”。不,那会是'.1f' – Bart