import matplotlib.pyplot as plt
data = [600, 200, 100]
labels = [‘Stock’, ‘Bond’, ‘Cash’]
explode = [0, 0, 0.2]
plt.pie(data, labels=labels, explode=explode,
autopct=lambda p:
f”{p:.0f}% ({p*sum(data)/100:.0f})”)
plt.show()

輸出:

lambda是Python的匿名函数,使用方式类似于普通的函数,但不需要使用def关键字进行定义,而是使用lambda关键字创建一个临时函数。
f格式化字符串是Python 3.6引入的一种字符串格式化方式,以f或F开头,通过{}在字符串中插入变量或表达式,可以更直观地生成字符串,而且可以直接在字符串中使用变量或表达式的值,例如:

在这个例子中,f字符串中使用了花括号{}表示要插入一个变量或表达式,其中变量或表达式需要使用实际的值替换。格式化字符串中的表达式可以是任何合法的Python表达式,例如:

在上述的例子中,f字符串中的表达式x*2将会被计算并插入字符串中,生成x=3, x*2=6的输出结果。
在本题中,lambda p: f"{p:.0f}% ({p*sum(data)/100:.0f})"是一个匿名函数,它的参数为p,表示所占比例的百分数,使用f字符串将p格式化为不带小数的百分数字符串,再插入括号中使用的表达式{p*sum(data)/100:.0f},其中sum(data)表示数据总和,p*sum(data)/100表示所占比例对应的数据值。整个函数的作用是将百分比和对应的数据值格式化为一个字符串,用于在饼图中显示每个扇形的标签。
參數 autopct : “pct” 是 “percent” 的缩写。 “autopct” 的全称是 “automatic percent”,表示自动计算百分比(本例會自動替換為67, 22, 11)
{p:.0f}%
這部分是Python格式化字串的語法。在這個字串中,冒號(:)表示格式指示符的開始,點號(.)表示精度指示符,數字0表示要顯示幾位小數。因此,{p:.0f}的意思是將p這個變數格式化為一個沒有小數的浮點數。
在這個例子中,這個字串用於顯示扇形圖上每個部分的百分比,因此不需要小數點。如果要顯示一個小數位,可以將格式指示符改為{p:.1f},以此類推。

在格式化字符串中,百分号 % 用于指示格式化占位符的开始,例如 %d 表示整数占位符,%f 表示浮点数占位符等。如果要在字符串中输出实际的百分号,可以用 %% 转义来实现,例如 "10%%" 会被格式化为 "10%"。
在 f 字符串中,花括号内可以包含任何 Python 表达式,而其中的百分号 % 不会被解释成格式化占位符的开始,因此不需要使用 %% 转义。例如,f"{2 * 3}%" 会被格式化为 "6%"。
推薦hahow線上學習python: https://igrape.net/30afN


![Python: pandas.DataFrame (df) 的取值: df [單一字串] 或df [list_of_strings] 選取一個或多個columns; df [切片] 或 df [bool_Series] 選取多個rows #bool_Series長度同rows, index也需要同df.index ,可以使用.equals() 確認: df.index.equals(mask.index) Python: pandas.DataFrame (df) 的取值: df [單一字串] 或df [list_of_strings] 選取一個或多個columns; df [切片] 或 df [bool_Series] 選取多個rows #bool_Series長度同rows, index也需要同df.index ,可以使用.equals() 確認: df.index.equals(mask.index)](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2025/04/20250420212553_0_6fb2c3.png?quality=90&zoom=2&ssl=1&resize=350%2C233)







近期留言