通过bbox_to_anchor精细调整图例位置(面向对象)

# 需求一: 图例用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参数用于控制图例在图表中的位置,该参数支持字符串和数值两种形式的取值,每种取值及其对应的图例位置的说明如下表所示:

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()

运行效果图如下:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值