图表辅助元素的定制实例

实例内容

根据题目要求绘制饼图、图例、表格:

1.根据题目要求绘制饼图,代码如下:
# 导入所需库
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%%')

plt.show()
效果图如下:2.添加图例和表格,加入代码如下:
# 添加图例(通过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')
 完整代码:
# 导入所需库
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()
 效果图如下:

 如图所示,图例与饼图重叠了一部分,导致并不美观,且表格颜色单调,可自定义添加颜色,以下为优化代码要求:


需求一: 图例用4列展示
需求二: 表格填充你喜欢的任意颜色
需求三: 调整图例和表格位置,如运行效果图所示(不要求完全一致,但应做到相似度8成以上)。
需求四:右下角加入“  提示:不建议使用pycharm来做实验(超出绘图区域的范围会看不到,除非你调整窗口视野),最好使用jupyter notebook来做实验  ”


在绘制饼图时:

使用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)表示图形的中心位置,稍微偏右下一些。
 

完整优化代码如下:
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%%')

# 调整图表位置
plt.subplots_adjust(left=-0.5)

# 添加图例
plt.legend(kinds, loc='upper right', ncol=4, bbox_to_anchor=[2.1, 0.9])

# 添加表格数据
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]
          )

# 展示图表
plt.show()
效果图如下:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值