攝影或3C

Python: matplotlib如何繪製圓餅圖? plt.pie(data, labels=labels, explode=explode, autopct=lambda p: f”{p: .0f}% ({p*sum(data)/100: .0f})”) ; lambda匿名函数 ; 前綴 f “{變數or運算式: .0f}” 格式化字串

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引入的一种字符串格式化方式,以fF开头,通过{}在字符串中插入变量或表达式,可以更直观地生成字符串,而且可以直接在字符串中使用变量或表达式的值,例如:

在这个例子中,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

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡