欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/131089501
饼图 (Pie Chart) 是一种圆形统计图,被分割成片用于表示数值间的比例关系。每个切片的弧长以及相应的中心角和面积与其表示的量成正比。饼图适合用于展示构成、占比、份额等数据。
源码如下:
- 其中,高亮显示使用
plt.pie()
函数的explode
参数,默认是全0列表,当设置超过0时,如0.05,则当前位置是高亮显示。
def draw_pie_chart(
val_list, label_list, highlight_idx=-1,
title="", xlabel="", ylabel="", figsize=(8, 8), font_scale=1.2,
is_show=False, save_name="",
**plot_kwargs,
):
"""
绘制饼图
:param val_list: 待处理数据
:param label_list: 待处理数据的标签,
:param highlight_idx: 高亮显示区域
:param title: 图表标题
:param xlabel: X 轴标签
:param ylabel: Y 轴标签
:param figsize: 图像尺寸
:param font_scale: 字体缩放尺寸
:param is_show: 是否显示
:param save_name: 是否存储图像
:param plot_kwargs: 其余参数
:return:
"""
assert len(val_list) == len(label_list)
assert highlight_idx < len(val_list)
sns.set(font_scale=font_scale)
plt.figure(figsize=figsize)
explode_list = [0.0 for _ in range(len(val_list))]
# 高亮显示区域
if highlight_idx >= 0:
highlight_idx = min(highlight_idx, len(explode_list) - 1)
explode_list[highlight_idx] = 0.05
# 绘制饼图
plt.pie(
x=val_list,
labels=label_list,
autopct='%1.2f%%',
colors=sns.color_palette('Set2'),
# Add space around each slice
explode=explode_list,
** plot_kwargs,
)
plt.title(title)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
if save_name:
# transparent=True
assert save_name.endswith("png") or save_name.endswith("jpg")
plt.savefig(save_name, bbox_inches='tight', format='png')
if is_show:
plt.show()
return plt.gcf()
def main():
data_list = [11, 11, 7, 26]
label_list = ["MSA Update", "Model Diversity", "MSA Ranking", "Unified Prediction"]
draw_pie_chart(data_list, label_list, highlight_idx=0, is_show=True, save_name="xxx.png")