用matplotlib方法完成 图标辅助元素的定制

通过之前学习的饼图绘制和添加图例的方法,本章我们将学习如何让图例在饼图中的位置更加美观耐看

1,先来回顾一下图例的相关语法
具体语法如下

Axes.legend(*args, **kwargs)

参数说明:

handles:表示由图形标识构成的列表
labels:表示由图列项构成的列表
loc:用于控制图例在图表中的位置
bbox_to_anchor:用于控制图例的布局,主要是表格的形状和大小
ncol:表示图例的列数,默认值为1
title:表示图例的标题,默认值为None
shadow:表示是否在图例后面显示阴影,默认值为None
fancybox:表示是否为图例设置圆角边框,默认值为None

2.学会了图例,相信很多小伙伴会忘记饼图的参数如何设置,没关系,让我们一起巩固一下

使用pyplot 的 pie() 函数可以快速绘制饼图或环形图,pie() 函数语法格式如下

pie(x, explode=None, labels=None, autopct=None, pctdistance=0.6, shaow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textpropos=None, center=(0, 0), frame=False, *, data=None)


pie()函数的参数如下

x:各个饼块的尺寸。类1维数组结构。
explode:每个饼块相对于饼圆半径的偏移距离,取值为小数。类1维数组结构。默认值为None。
labels:每个饼块的标签。字符串列表。默认值为None。
colors:每个冰块的颜色。类数组结构。**颜色会循环使用。**默认值为None,使用当前色彩循环。
autopct:饼块内标签。None或字符串或可调用对象。默认值为None。如果值为格式字符串,标签将被格式化,如果值为函数,将被直接调用。


pctdistance:饼块内标签与圆心的距离。浮点数。默认值为0.6,autopct不为None该参数生效。
shadow:饼图下是否有阴影。布尔值。默认值为False。
labeldistance:饼块外标签与圆心的距离。浮点值或None。默认值为1.1。如果设置为None,标签不会显示,但是图例可以使用标签。


startangle:饼块起始角度。浮点数。默认值为0,即从x轴开始。角度逆时针旋转。
radius:饼图半径。浮点数。默认值为1.
counterclock:角度是否逆时针旋转。布尔值。默认值为True。
wedgeprops:饼块属性。字典。默认值为None。具体见matplotlib.patches.Wedge 。
textprops:文本属性。字典。默认值为None。
center:饼图中心坐标。(float,float)浮点数二元组。默认值为(0,0)。
frame:是否绘制子图边框。布尔值。默认为False。
rotatelabels:饼块外标签是否按饼块角度旋转。布尔值。默认为False。
normalize:是否归一化。布尔值或None。默认值为None。
True:完全饼图,对x进行归一化,sum(x)==1。
False:如果sum(x)<=1,绘制不完全饼图。如果sum(x)>1,抛出ValueError异常。
None:如果sum(x)>=1,默认值为True。如果sum(x)<1,默认值为False。
绘制不完全饼图,需要明确传递normalize=False。
pie()的返回值为三元组。

patches :matplotlib.patches.Wedge对象序列。类型为列表。
texts:外标签Text对象列表。类型为列表。
autotexts:只有autopct属性不为None才会返回值,饼块内标签Text对象列表。类型为列表
 

学会了饼图和图例的设置,还差一个表格的参数设置

具体语法如下

table(cellText=None, cellColorss=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:表示表格与绘图区域的对齐方式
 

通过bbox_to_anchor精细调整图例位置

同时通过bbox设置表格的位置和大小

现在做一道例题试试手

# 需求一: 图例用4列展示
# 需求二: 表格填充你喜欢的任意颜色
# 需求三: 调整图例和表格位置,如运行效果图所示(不要求完全一致,但应做到相似度8成以上)。
#导入模块

import matplotlib.pyplot as plt
import numpy as np

#设置中文

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.5, 0.8],ncol=4)

# 添加表格(通过bbox精细调整表格位置和大小)

plt.table(cellText=[weight], cellLoc='center', rowLabels=['重量(g)'], 
          colLabels=kinds,loc='bottom',rowColours='r',
          bbox=[1.25,0.35,1.5,0.25],
          colColours=('#98F5FF','#98F5FF','#98F5FF','#98F5FF','#98F5FF','#98F5FF','#98F5FF','#98F5FF'),
          cellColours=[['pink','pink','pink','pink','pink','pink','pink','pink']])
plt.show()

运行结果如下图所示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值