(5-1)绘制饼状图:绘制基本的饼状图(绘制简易的饼状图+修饰饼状图+突出显示某个饼状图的部分)

饼状图常用于数据统计和分析领域,通常分为2D与3D饼状图。饼状图显示一个数据系列(数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。在现实应用中,经常使用饼状图来展示数据分析的结果,这样可以更加直观的展示数据分析结果。在本节的内容中,将详细讲解使用Python绘制饼状图的知识。

5.1  绘制基本的饼状图

在数据可视化分析工作中,经常需要绘制和数据统计相关的柱状图。在本节的内容中,将详细讲解在Python程序中使用各种库绘制基本饼状图的知识。

5.1.1  绘制简易的饼状图

在Python程序中,可以使用Matplotlib中的函数matplotlib.pyplot.pie()绘制一个饼状图。请看下面的实例文件pie01.py,功能是使用Matplotlib绘制一个饼状图,可视化展示XX网站会员用户教育水平的分布信息。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
# 构造数据
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ['中专','大专','本科','硕士','其他']
"""
绘制饼图
explode:设置各部分突出
label:设置各部分标签
labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径
autopct:设置圆里面文本
shadow:设置是否有阴影
startangle:起始角度,默认从0开始逆时针转
pctdistance:设置圆内文本距圆心距离
返回值
l_text:圆内部文本,matplotlib.text.Text object
p_text:圆外部文本
"""

# 绘制饼图
plt.pie(x = edu, # 绘图数据
    labels=labels, # 添加教育水平标签
    autopct='%.1f%%' # 设置百分比的格式,这里保留一位小数
)
# 添加图标题
plt.title('XX网站会员用户的教育水平分布')
plt.show()              # 显示图形

执行效果如图5-1所示。

图5-1  执行效果

另外,我们也可以使用库Pygal中内置函数Pie()绘制饼状图。请看下面的实例文件pie01-1.py,功能是库Pygal绘制一个饼状图,可视化展示某年度浏览器产品的市场份额数据。

import pygal

pie_chart = pygal.Pie()
pie_chart.title = 'Browser usage in February 2012 (in %)'
pie_chart.add('IE', 19.5)
pie_chart.add('Firefox', 36.6)
pie_chart.add('Chrome', 36.3)
pie_chart.add('Safari', 4.5)
pie_chart.add('Opera', 2.3)
pie_chart.render_to_file('bar_chart.svg')

执行后会得到文件bar_chart.svg,效果如图5-2所示。

图5-2  文件bar_chart.svg的效果

5.1.2  修饰饼状图

请看下面的实例文件pie02.py,功能是以前面的例文件pie01.py为基础进行升级,修饰了使用Matplotlib绘制的饼状图,可视化展示XX网站会员用户教育水平的分布信息。

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
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.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

# 将横、纵坐标轴标准化处理,确保饼图是一个正圆,否则为椭圆
plt.axes(aspect='equal')
# 绘制饼图
plt.pie(x = edu,            # 绘图数据
    explode=explode,        # 突出显示大专人群
    labels=labels,          # 添加教育水平标签
    colors=colors,          # 设置饼图的自定义填充色
    autopct='%.1f%%',       # 设置百分比的格式,这里保留一位小数
    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('XX网站会员用户的教育水平分布统计图')
# 显示图形
plt.show()

执行效果如图5-3所示。

图5-3  执行效果

5.1.3  突出显示某个饼状图的部分

在前面的实例文件pie02.py中,通过设置函数matplotlib.pyplot.pie()中的参数explode设置某个饼状部分突出显示。请看下面的例文件pie03.py,功能是使用Matplotlib绘制的饼状图,设置了某个饼状图部分突出显示。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'				#设置中文显示
plt.figure(figsize=(6,6))							#将画布设定为正方形,则绘制的饼图是正圆
label=['第一','第二','第三']							#定义饼图的标签,标签是列表
explode=[0.01,0.2,0.01]							#设定各项距离圆心n个半径
#plt.pie(values[-1,3:6],explode=explode,labels=label,autopct='%1.1f%%')#绘制饼图
values=[4,7,9]
plt.pie(values,explode=explode,labels=label,autopct='%1.1f%%')#绘制饼图
plt.title('2018年饼图')
plt.savefig('./2018年饼图')
plt.show()

执行效果如图5-4所示。

 

图5-4  执行效果

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值