2017-09-26 68 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