目录
优化前:
代码:
# 导入所需库
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制饼图
kinds = ['面粉', '全麦粉', '酵母', '苹果酱', '鸡蛋', '黄油', '盐', '白糖']
weight = [250, 150, 4, 250, 50, 30, 4, 20]
plt.pie(weight, autopct='%3.1f%%')
# 添加图例(通过bbox_to_anchor精细调整图例位置)
plt.legend(kinds, loc='upper right', bbox_to_anchor=[1.1, 1.1])
# 添加表格(通过bbox精细调整表格位置和大小)
plt.table(cellText=[weight], cellLoc='center', rowLabels=['重量(g)'], colLabels=kinds, loc='bottom')
plt.show()
输出结果:![](https://i-blog.csdnimg.cn/blog_migrate/64f9c3532bf8274ba6814014ca524983.png)
优化需求:
- 需求一: 图例用4列展示
- 需求二: 表格填充你喜欢的任意颜色
- 需求三: 调整图例和表格位置,如运行效果图所示(不要求完全一致,但应做到相似度8成以上)。
- 需求四:右下角加入“ 提示:不建议使用pycharm来做实验(超出绘图区域的范围会看不到,除非你调整窗口视野),最好使用jupyter notebook来做实验 ”
优化后:
代码:
# 导入所需库
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 避免负号显示为方块
plt.rcParams['axes.unicode_minus'] = False
# 定义数据,其中kinds表示数据类别,weight表示每个类别的数据值
kinds = ['面粉', '全麦粉', '酵母', '苹果酱', '鸡蛋', '黄油', '盐', '白糖']
weight = [250, 150, 4, 250, 50, 30, 4, 20]
# 绘制饼图,autopct参数设置显示数据占比的小数点位数
plt.pie(weight, autopct='%3.1f%%')
# 调整布局,左移
plt.subplots_adjust(left=-0.5)
# 添加图例,通过bbox_to_anchor参数精细调整图例位置,ncol参数设置列数
plt.legend(kinds, loc='upper right', ncol=4, bbox_to_anchor=[2.1, 0.9])
# 添加表格,cellText参数设置表格数据,rowLabels参数设置行标签,
# colLabels参数设置列标签,cellColours参数设置表格颜色,
# rowColours参数设置行的颜色,colColours参数设置列的颜色,
# bbox参数用于精细调整表格位置和大小
plt.table(cellText=[weight],
cellLoc='center',
rowLabels=['重量(g)'],
colLabels=kinds,
cellColours=[['#fff000', '#fff000', '#fff000', '#fff000', '#fff000', '#fff000', '#fff000', '#fff000']],
rowColours=['#fff000'],
colColours=['pink', 'pink', 'pink', 'pink', 'pink', 'pink', 'pink', 'pink'],
bbox=[1.1, 0.2, 1, 0.3]
)
# 添加提示文本
text = '提示:不建议使用pycharm来做实验(超出绘图区域的范围会看不到,除非你调整窗口视野),最好使用jupyter notebook来做实验'
plt.text(1.5, -0.1, text, ha='center', va='center', color='red', transform=plt.gca().transAxes)
# 显示图形
plt.show()
解释:
在绘制饼图时:
使用plt.pie
函数传入数据weight
并用autopct
参数设置百分比的小数点位数。
在添加图例时:
使用plt.legend
函数传入每个类别kinds
并调整位置和列数。
在添加表格时:
使用plt.table
函数传入数据cellText
、行标签rowLabels
、列标签colLabels
、表格颜色cellColours
、行颜色rowColours
和列颜色colColours
,以及精细调整表格位置和大小的bbox
参数。
最后,使用plt.show()
函数显示图形。
在添加提示文本时:
plt.gca().transAxes
用于获取坐标轴的变换方式。
ha
和va
参数分别指定文本水平和垂直方向的对齐方式。
在这里,ha='center'
表示水平方向居中对齐,va='center'
表示垂直方向居中对齐。
color
参数指定文本颜色为红色。
plt.text
函数的前两个参数指定文本的位置,这里的位置用相对坐标表示,(1.5, -0.1)
表示图形的中心位置,稍微偏右下一些。