离散型变量的可视化之【饼图】****
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)
案例代码如下:
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()
出来的效果:
饼图中突出显示大专学历的人群,是因为在这300万失信人群中,大专学历的人数比例最高,该功能就是通过explode参数完成的。另外,还需要对如上饼图的绘制说明几点:
应用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)
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()
出来的效果:
应用pandas模块中的plot方法,也可以得到一个比较好看的饼图。该方法中除了kind参数和title参数属于plot方法,其他参数都是pyplot模块中pie函数的参数,并且以关键字参数的形式调用。