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