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

 

主要参数说明:

参数 说明
 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()
View Code

这个函数返回什么呢,

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%')]

'''

存入数据库时可能会用到。

posted @ 2021-08-31 21:56  zeroy610  阅读(268)  评论(0)    收藏  举报