Python数据可视化的例子——饼图(pie)

离散型变量的可视化之【饼图】****

1、matplotlib模块

pie函数的语法和参数含义如下:

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)
  1. x:指定绘图的数据。
  2. explode:指定饼图某些部分的突出显示,即呈现爆炸式。
  3. labels:为饼图添加标签说明,类似于图例说明。
  4. colors:指定饼图的填充色。
  5. autopct:自动添加百分比显示,可以采用格式化的方法显示。
  6. pctdistance:设置百分比标签与圆心的距离。
  7. shadow:是否添加饼图的阴影效果。
  8. labeldistance:设置各扇形标签(图例)与圆心的距离。
  9. startangle:设置饼图的初始摆放角度。 radius:设置饼图的半径大小。
  10. counterclock:是否让饼图按逆时针顺序呈现。
  11. wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等。
  12. textprops:设置饼图中文本的属性,如字体大小、颜色等。
  13. center:指定饼图的中心点位置,默认为原点。
  14. frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置。

案例代码如下:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['Microsoft YaHei']  #显示中文标签,处理中文乱码问题
plt.rcParams['axes.unicode_minus']=False  #坐标轴负号的处理
plt.axes(aspect='equal')  #将横、纵坐标轴标准化处理,确保饼图是一个正圆,否则为椭圆

#构造数据
edu = [0.2515, 0.3724, 0.3336, 0.0368, 0.0057]
labels = ['中专','大专','本科','硕士','其他']
explode = [0, 0.1, 0, 0, 0]  #生成数据,用于凸显大专学历人群
colors = ['#9999ff', '#ff9999', '#7777aa', '#2442aa', '#dd5555']  #自定义颜色

plt.pie(x=edu,  #绘图数据
        explode=explode, #指定饼图某些部分的突出显示,即呈现爆炸式
        labels=labels,  #添加教育水平标签
        colors=colors,
        autopct='%.2f%%',  #设置百分比的格式,这里保留两位小数
        pctdistance=0.8,  #设置百分比标签与圆心的距离
        labeldistance=1.1,  #设置教育水平标签与圆心的距离
        startangle=180,  #设置饼图的初始角度
        radius=1.2,  #设置饼图的半径
        counterclock=False,  #是否逆时针,这里设置为顺时针方向
        wedgeprops={'linewidth':1.5, 'edgecolor':'green'},  #设置饼图内外边界的属性值
        textprops={'fontsize':10, 'color':'black'},  #设置文本标签的属性值
        )

#添加图标题
plt.title('失信用户的受教育水平分布')
#显示图形
plt.show()

出来的效果:
Python数据可视化的例子——饼图(pie)_第1张图片
饼图中突出显示大专学历的人群,是因为在这300万失信人群中,大专学历的人数比例最高,该功能就是通过explode参数完成的。另外,还需要对如上饼图的绘制说明几点:

  1. 如果绘制的图形中涉及中文及数字中的负号,都需要通过rcParams进行控制。
  2. 由于不加修饰的饼图更像是一个椭圆,所以需要pyplot模块中的axes函数将椭圆强制为正圆。
  3. 自定义颜色的设置,既可以使用十六进制的颜色,也可以使用具体的颜色名称,如red、black等。
  4. 如果需要添加图形的标题,需要调用pyplot模块中的title函数。
  5. 代码plt.show()用来呈现最终的图形,无论是使用Jupyter或Pycharm编辑器,都需要使用这行代码呈现图形。

2、pandas模块

应用pandas模块的绘图“方法”plot。
该方法可以针对序列和数据框绘制常见的统计图形,例如折线图、条形图、直方图、箱线图、核密度图等。同样,plot也可以绘制饼图,接下来简单介绍一下该方法针对序列的应用和参数含义:

Series.plot(kind='line', ax=None, figsize=None, use_index=True, title=None,
        grid=None, legend=False, style=None, logx=False, logy=False,
        loglog=False, xticks=None, yticks=None, xlim=None, ylim=None,
      rot=None, fontsize=None, colormap=None, table=False, yerr=None,
        xerr=None, label=None, secondary_y=False, **kwds)
  1. kind:指定一个字符串值,用于绘制图形的类型,默认为折线图
  2. line。还可以绘制垂直条形图bar、水平条形图hbar、直方图hist、箱线图box、核密度图kde、面积图area和饼图pie。
  3. ax:控制当前子图在组图中的位置。例如,在一个2×2的图形矩阵中,通过该参数控制当前图形在矩阵中的位置。
  4. figsize:控制图形的宽度和高度,以元组形式传递,即(width,hright)。
  5. use_index:bool类型的参数,是否将序列的行索引用作x轴的刻度,默认为True。 title:用以添加图形的标题。
  6. grid:bool类型的参数,是否给图形添加网格线,默认为False。
  7. legend:bool类型的参数,是否添加子图的图例,默认为False。
  8. style:如果kind为line,该参数可以控制折线图的线条类型。
  9. logx:bool类型的参数,是否对x轴做对数变换,默认为False。
  10. logy:bool类型的参数,是否对y轴做对数变换,默认为False。
  11. loglog:bool类型的参数,是否同时对x轴和y轴做对数变换,默认为False。
  12. xticks:用于设置x轴的刻度值。
  13. yticks:用于设置y轴的刻度值。
  14. xlim:以元组或列表的形式,设置x轴的取值范围,如(0,3)表示x轴落在0~3的范围之内。
  15. ylim:以元组或列表的形式,设置y轴的取值范围。 rot:接受一个整数值,用于旋转刻度值的角度。
  16. fontsize:接受一个整数,用于控制x轴与y轴刻度值的字体大小。
  17. colormap:接受一个表示颜色含义的字符串,或者Python的色彩映射对象,该参数用于设置图形的区域颜色。
  18. table:该参数如果为True,表示在绘制图形的基础上再添加数据表;如果传递的是序列或数据框,则根据数据添加数据表。
  19. yerr:如果kind为bar或hbar,该参数表示在条形图的基础上添加误差棒。
  20. xerr:含义同yerr参数。
  21. label:用于添加图形的标签。 secondary_y:bool类型的参数,是否添加第二个y轴,默认为False。
  22. **kwds:关键字参数,该参数可以根据不同的kind值,为图形添加更多的修饰性参数(依赖于pyplot中的绘图函数)。

pandas模块中的plot“方法”可以根据kind参数绘制不同的统计图形,而且也包含了其他各种灵活的参数。除此,根据不同的kind参数值,可以调用更多对应的关键字参数**kwds,这些关键字参数都源于pyplot中的绘图函数。

案例代码如下:

import pandas as pd
import matplotlib.pyplot as plt

#构建序列
data1 = pd.Series({'中专':0.2515, '大专':0.3724, '本科':0.3336, '硕士':0.0368, '其他':0.0057})
#将序列的名称设置为空字符,否则绘制的饼图左边会出现None这样的字眼
data1.name = ''
#控制饼图为正圆
plt.axes(aspect = 'equal')
#防止中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
#plot方法对序列进行绘图
data1.plot(kind = 'pie',  #选择图形类型
           autopct = '%.2f%%',  #饼图中添加数值标签
           radius = 1,  #设置饼图半径
           startangle = 180,  #设置饼图的初始角度
           counterclock = False,  #将饼图的顺序设置为顺时针方向
           title = '失信用户的受教育水平分布',  #为饼图添加标题
           wedgeprops = {'linewidth':1.5, 'edgecolor':'green'},  #设置饼图内外边界的属性值
           textprops = {'fontsize':10, 'color':'black'},  #设置文本标签的属性值
           )
#显示图形
plt.show()

出来的效果:
Python数据可视化的例子——饼图(pie)_第2张图片
应用pandas模块中的plot方法,也可以得到一个比较好看的饼图。该方法中除了kind参数和title参数属于plot方法,其他参数都是pyplot模块中pie函数的参数,并且以关键字参数的形式调用。

你可能感兴趣的:(数据挖掘与数据分析,python,数据可视化)