我们可以通过调整对应参数来调整表格和图例的样式。
图例方面可以通过loc参数来调整图例位置,该参数的取值及其对应的图例位置如下:
同时bbox_to_anchor参数可以调整图例的布局,该参数接收一个包含两个数值的元组,其中第一个数值用于控制图例显示的水平位置,值越大则说明图例显示的位置越偏右;第二个数值用于控制图例的垂直位置,值越大则说明图例显示的位置越偏上。
除此之外还可以通过ncol参数调整图例列数,该参数默认值为1。
添加表格的table()函数格式如下:
table(cellText=None, cellColours=None, cellLoc='right', colWidths=None,
rowLabels=None, rowColours=None, rowLoc='left', colLabels=None,
colColours=None, colLoc='center',loc='bottom', bbox=None,
edges='closed', **kwargs)
该函数常用参数表示的含义如下:
- cellText:表示表格单元格中的数据,是一个二维列表。
- cellColours:表示单元格的背景颜色。
- cellLoc:表示单元格文本的对齐方式,支持‘left’,'right'和‘center’三种取值,默认值为‘right’。
- colWidths:表示每列的宽度。
- rowLabels:表示行标题的文本。
- rowColours:表示行标题所在单元格的背景颜色。
- rowLoc:表示行标题的对齐方式。
- colLabels:表示列标题的文本。
- colColours:表示列标题所在单元格的背景颜色。
- colLoc:表示列标题的对齐方式。
- loc:表示表格与绘图区域的对齐方式。
实例:果酱面包配料比例
绘图代码如下:
#导入模块
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()
图表绘制结果如下:
现需要实现以下需求:
- 图例用四例展示;
- 表格填充任意颜色;
- 调整图例和表格的位置。
需求一可以通过上面讲到的ncol参数来实现,只需要在legend函数中加入ncol=4即可实现;
需求二可以通过cellColours参数、rowColours参数和colColours参数实现;
需求三可以通过调整legend函数中的bbox_to_anchor参数以及table函数中的bbox参数实现。
具体代码如下:
#导入模块
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=[2.0, 0.8],ncol=4)
#设置颜色
colour = ['pink','pink','pink','pink','pink','pink','pink','pink']
# 添加表格(通过bbox精细调整表格位置和大小)
plt.table(cellText=[weight], cellLoc='center', rowLabels=['重量(g)'],
colLabels=kinds,loc='bottom',cellColours=[colour],
rowColours=['pink'], colColours=colour,bbox=[1.1,0.3,0.8,0.3])
#展示图表
plt.show()
运行结果如下: