关于ax.annotate的问题

时间:2017-09-26 07:50:37

标签: python matplotlib

我对这两行有疑问。我不完全理解它。

%和此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 个答案:

答案 0 :(得分:0)

annotate函数为图的某些特征添加文本(https://matplotlib.org/users/annotations.html)。在您的情况下,annotate函数采用以下参数:

a)要写的文字

("%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( ))

这只是两个浮点数,表示x坐标和y坐标的形式(x,y)

c)注释的字体大小

fontsize = 2

d)写入注释的坐标

 xytext=(-3, 2)

e)其他论点

textcoords='offset pixels'