mpl基础绘图之饼图
mpl主要使用plt.pie()绘制饼图。
函数格式:
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,
shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True,
wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *,
normalize=None, data=None)
作用:制作数组*x*的饼图。每个楔形的分数面积由' ' x/sum(x) ' '给出。如果“sum(x)<1”,则*x*的值直接给出分数区域,数组将不会被标准化。得到的饼状图将有一个大小为' ' 1 - sum(x) ' '的空楔形。
楔形是逆时针绘制的,默认从x轴开始。
import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3])
plt.pie(x,explode=[0.1,0.2,0.3])
plt.show()

主要参数说明:
| 参数 | 说明 |
| x : 1D array-like | 控制楔形所占的面积大小。 |
| explode : array-like, default: None |
如果不是*None*,则是一个' ' len(x) ' '数组,指定用于偏移每个楔形的半径的分数。 就是把馅饼切开来了。 |
| labels : list, default: None | 按顺序为每个楔提供标签的字符串序列。 |
| colors : array-like, default: None | 为每个楔形指定颜色。 |
| autopct : None or str or callable, default: None |
控制字符串格式。 如果不是*None*,则是一个字符串或函数,用于标记楔形的数值。标签将被放置在楔子里面。如果是格式字符串,则标签将为' ' fmt % pct ' '。 如果它是一个函数,它将被调用。 |
| pctdistance:float, default: 0.6 | 控制每个饼图切片的中心与由*autopct*生成的文本开头之间的比率。如果*autopct*为*None*则忽略。 |
| shadow : bool, default: False | 为饼图添加阴影。 |
| labeldistance : float or None, default: 1.1 | 控制标签距离饼中心的距离。 |
| startangle : float, default: 0 degrees | 控制饼图的旋转。默认饼图的楔形是从x轴逆时针画起,设置角度后将逆时针旋转。 |
| radius : float, default: 1 | 饼图半径参数。 |
| counterclock : bool, default: True | 指定画图方向,T为逆时针,F为顺时针。 |
| wedgeprops : dict, default: None | 通用参数设置。 |
import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif']=['SimHei']#正常显示中文 x=np.array([1,1,1.5,1,5.5]) fig,ax=plt.subplots(figsize=(5,5)) ax.set(title="家庭开支") ax.pie(x,explode=[0,0,0,0,0.1], labels=["衣食","娱乐","教育","出行","房贷",], autopct="%.1f%%", shadow=True, labeldistance=0.8, pctdistance=0.4, startangle=30, radius=1.3, counterclock=True ) plt.show()

这个函数返回什么呢,
1. patches : list
一个' matplotlib.patches '序列。楔形的实例。
2. texts : list
标签的列表。文本的实例。
3. autotexts : list
文本实例的数字标签。只有当参数*autopct*不是*None*时才会返回。
a,b,c=ax.pie(...) print("patches:",a) print("texts:",b) print("autotexts:",c) ''' patches: [<matplotlib.patches.Wedge object at 0x000001C642DA0730>, <matplotlib.patches.Wedge object at 0x000001C6416B70A0>, <matplotlib.patches.Wedge object at 0x000001C6416B7970>, <matplotlib.patches.Wedge object at 0x000001C6416C4280>, <matplotlib.patches.Wedge object at 0x000001C6416C4B50>] texts: [Text(0.6958958269951442, 0.7728706217542134, '衣食'), Text(0.10870958727259772, 1.0343027727097234, '娱乐'), Text(-0.6544932369606794, 0.8082317754040186, '教育'), Text(-1.0343027777987852, 0.10870953885339094, '出行'), Text(0.40853957209140673, -1.0642816441315572, '房贷')] autotexts: [Text(0.3479479134975721, 0.3864353108771067, '10.0%'), Text(0.05435479363629886, 0.5171513863548617, '10.0%'), Text(-0.3272466184803397, 0.4041158877020093, '15.0%'), Text(-0.5171513888993926, 0.05435476942669547, '10.0%'), Text(0.2221881883304142, -0.5788198415452328, '55.0%')] '''
存入数据库时可能会用到。

浙公网安备 33010602011771号