基于matplotlib的数据可视化 - 饼状图pie

绘制饼状图的基本语法

创建数组 x 的饼图,每个楔形的面积由 x / sum(x) 决定;

若 sum(x) < 1,则 x 数组不会被标准化,x 值即为楔形区域面积占比。注意,该种情况会出现 1 - sum(x) 的空楔形

若 sum(x) > 1,则由 x[ i ] / sum(x) 算出每一个楔形占比,饼图360°区域均被填充。

下图为sum(x) < 1 的情况,存在空楔形区域。

1 语法

pie(x, explode=None, labels=None, colors=None, 
    autopct=None, pctdistance=0.6, shadow=False, 
    labeldistance=1.1, startangle=None, radius=None, 
    counterclock=True, wedgeprops=None, textprops=None, 
    center=(0, 0), frame=False, rotatelabels=False, 
    hold=None, data=None
    )

x - 创建饼状图的数组

explode - array-like, optional, default: None;偏离每个楔形的半径的分数。若非None,则 数组长度 = len(x),

labels - list, optional, default: None;为每个楔形添加标签

color - array-like, optional, default: None;若无,则用currently active cycle中的颜色添加

autopct - None (default), string, or function, optional;用于数值标记楔形的数值 / 字符串 / 函数,其中标签置于楔形内部;若None,则不现实楔形块占比数值,可以是整数( ' %d%%' )、浮点数( ' %2.3f %%' )、字符串( ' %s %%' )、函数。

pctdistance - float, optional, default: 0.6 ;描述autopct 值在楔形块的位置;当pctdistance = 0,所有autopct值均位于楔形块的 ‘ 尖端 ’ 位置,当为1,则位于楔形块的弧线位置,当大于1时,则会成比例远离尖端位置,

当 pctdistance = 0时,一个饼状图特例。

shadow - bool, optional, default: False;为饼状图画阴影(True)

labeldistance : float, optional, default: 1.1;描述label标签的在楔形块上的位置,确切地说,与圆心无关,而相对于楔形块的 “尖端 ” 的位置关系

startangle : float, optional, default: None;若不是None,则饼图的起点为 x 轴并逆时针旋转 angle 度

radius : float, optional, default: None;饼图的半径,若为None时,则默认为1

counterclock : bool, optional, default: True;指定分数方向,逆时针 (True) 或顺时针

wedgeprops : dict, optional, default: None;描述楔形边界线宽度值,参数形式``wedgeprops = {'linewidth': 3}``楔形边界线宽度为3

textprops : dict, optional, default: None;传递给文本对象的字典参数

center :  list of float, optional, default: (0, 0);图标的中心为,默认(0,0),也可以是两个标量的序列(sequence  of 2 scalars)

frame : bool, optional, default: False;若True,则绘制轴框架

texts : list;标签列表,class:`matplotlib.text.Text` instances实例.

autotexts : list;基于数字标签(numeric labels)的class:`~matplotlib.text.Text`实例列表,仅当参数* autopct *不是* None *时才会返回。

 2 示例

import matplotlib.pyplot as plt

values = [13.23, 9.29, 5.34, 4.48, 3.01,2.97]
spaces = [0.01, 0.01, 0.01, 0.08, 0.01,0.01]
labels = ['Java', 'C', 'C++', 'Python', 'C#','Js']
colors = ['b', 'orangered', 'g', 'violet','gold','#EED2EE']

plt.figure('Pie', facecolor='lightgray')
plt.title('Pie', fontsize=20)
plt.pie(values, spaces, labels, colors, '%d%%',shadow=True, startangle=90)
# 让两个轴等比例缩放
# 如无该代码段,则为椭圆形饼状图
plt.axis('equal')
plt.show()

各语言占比数据为2017年11月前6个

猜你喜欢

转载自www.cnblogs.com/gengyi/p/9446511.html