第5关:绘制程序设计语言饼图
任务描述
列表labels和sizes中的数据分别是目前主流程序设计语言及其热度数据(百分比),请根据这些数据绘制饼图,并将Python程序设计语言所在区域突出0.1显示。
labels = ['C语言', 'Python', 'Java', 'C++语言', 'C#', 'VB.net', 'Javascript', 'PHP', 'Other']
sizes = [16.2, 12.1, 11.7, 7.6, 4.7, 4.0, 2.0, 1.8, 39.9]
输入格式
无
输出格式
要求:
- 设置饼图为圆形:
plt.axes(aspect=1) - 设置中文字体和负号显示问题如下:
plt.rcParams[‘font.sans-serif’] = [‘SimSun’] - 解决保存图像是负号’-'显示为方块的问题
plt.rcParams[‘axes.unicode_minus’] = False - 设置各扇形标签(图例)与圆心的距离(labeldistance)为1.1
- 自动添加百分比显示(autopct),格式化为保留小数点后1位小数
- 添加饼图的阴影效果
- 设置饼图的初始摆放角度为90度
- 设置百分比标签与圆心的距离0.7
- 图例左上角,指定图例在轴的位置为 (-0.3, 1.1)
- 要求本地调试、运行、绘制图形后,写入文件’program.png’中。
解题思路
本题的要求并不复杂,只要搞懂plt.pie()函数的参数,对照题目的要求一一设置即可,其中突出部分题目只要求了Python突出0.1,所以将其设置为0.1,其它设置为0即可。
参考代码
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimSun']
plt.rcParams['axes.unicode_minus'] = False
# 标签
labels = ['C语言', 'Python', 'Java', 'C++语言', 'C#', 'VB.net', 'Javascript', 'PHP', 'Other']
# 占比
weight = [16.2, 12.1, 11.7, 7.6, 4.7, 4.0, 2.0, 1.8, 39.9]
# 突出程度
out = [0,0.1,0,0,0,0,0,0,0]
# 圆形
plt.axes(aspect=1)
plt.pie(x=weight, explode=out, labels=labels, labeldistance=1.1, autopct='%2.1f%%', shadow=True, startangle=90, pctdistance=0.7)
plt.legend(loc='upper left', bbox_to_anchor=(-0.3, 1.1))
plt.savefig("output/program.png")
plt.show()