# 需求一: 图例用4列展示 # 需求二: 表格填充你喜欢的任意颜色 # 需求三: 调整图例和表格位置,如运行效果图所示(不要求完全一致,但应做到相似度8成以上)。 # 提示:不建议使用pycharm来做实验(超出绘图区域的范围会看不到,除非你调整窗口视野),最好使用jupyter notebook来做实验
一、matplotlib中可以直接使用pyplot模块的legend()函数添加图例
1.legend()函数的语法如下:
legend(handles,labels,loc,bbox_to_anchor,ncol,title,shadow,
fancybox,*args,**kwargs)
2.handles参数表示由图形标识构成的列表;
3.labels参数表示由图例项构成的列表;
4.loc参数用于控制图例在图表中的位置,该参数支持字符串和数值两种形式的取值,每种取值及其对应的图例位置的说明如下表所示:
位置编码 | 位置字符串 | 说明 |
---|---|---|
0 | ‘best’ | 自适应 |
1 | 'upper right' | 右上方 |
2 | 'upper left' | 左上方 |
3 | 'low left' | 左下方 |
4 | 'lower right' | 右下方 |
5 | 'right' | 右方 |
6 | 'center left' | 中心偏左 |
7 | 'center right' | 中心偏右 |
8 | 'lower center' | 中心偏下 |
9 | 'upper center' | 中心偏上 |
10 | 'center' | 居中 |
5.bbox_to_anchor参数用于精细调整图例在整张画布上的位置;
6.ncol参数表示图例的列数;
7.title参数表示图例的标题;
8.shadow参数控制是否在图例后面显示阴影,默认值为None;
9.fancybox参数控制是否为图例设置圆角边框,默认值为None。
下面将通过面向对象的方法绘制饼图并添加图例和表格
示例代码如下:
# 导入需要的库并命名
import matplotlib.pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#创建代表画布的Figure类的对象fig
fig = plt.figure()
ax = fig.add_subplot(111)
# 准备数据
ax.set_kinds = ['面粉', '全麦粉', '酵母', '苹果酱', '鸡蛋', '黄油', '盐', '白糖']
ax.set_weight = [250, 150, 4, 250, 50, 30, 4, 20]
# 绘制饼图
ax.pie(weight, autopct='%3.1f%%')
添加图例
利用ncol参数,将图例列数设为4,满足需求一;
利用loc参数、bbox_to_anchor参数来调整图例的位置,满足需求三。
# 添加图例(通过bbox_to_anchor精细调整图例位置)
ax.legend(kinds, loc='upper right', bbox_to_anchor=[2.35,0.8],ncol=4)
二、matplotlib中可以直接使用pyplot模块的table()函数添加表格
1.table()函数的语法格式如下:
matplotlib.pyplot.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表示单元格文本位置;
colWidths表示列宽:可选参数,浮点型列表,若没有指定列宽,以轴长为单位,所有列的宽度为:1/列数,列宽的设置只影响数据的列宽,对标题文本所在单元格的列宽无影响;
rowLables表示行标题单元格文本;
rowColours表示行标题单元格颜色;
rowLoc表示行标题单元格文本的位置;
colLabels表示列标题标签文本;
colColours表示列标题单元格颜色;
colLoc表示列标题单元格文本对齐方式;
loc表示表格位置;
bbox[xmin, ymin, width, height]精细调整位置的参数。
接下来添加表格
利用rowColours参数,colColours参数,cellColours参数为表格填充颜色,满足需求二;
利用bbox参数调整表格位置,满足需求三。
# 添加表格(通过bbox精细调整表格位置和大小)
ax.set_studentValues=[['面粉', '全麦粉', '酵母', '苹果酱', '鸡蛋', '黄油', '盐', '白糖'],
[250, 150, 4, 250, 50, 30, 4, 20]]
ax.table(cellText=[weight], cellLoc='center', rowLabels=['重量(g)'],
colLabels=kinds,loc='right',colWidths=[1] * 9,
rowColours=['#ccedb8'],colColours=['#ccedb8']*8,
cellColours=[['pink','pink','pink','pink',
'pink','pink','pink','pink']],
bbox=(1.06,0.25,1.26,0.35))
#展示
plt.show()