python-matplotlib库绘制饼形图专题(从一般饼状图到内嵌环形图)

文章目录

  • 1.plt.pie()
  • 2. 饼图基本
  • 3. 饼状图进阶
  • 4. 环形图
  • 5. 内嵌环形图

      ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ
                 
    ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ


大家好,我是侯小啾!

今天分享的内容是,基于python-matplotlib库的饼形图绘制,具体内容涉及一般的饼图、分裂饼图、以及环形图。


1.plt.pie()

饼图 常常用来显示 整体中各部分所占的比例,在python-matplotlib库中通过plt.pie()方法来实现。
其主要参数如下:

x --------每一块饼图的比例组成的序列。可以是一个列表。如果其中元素的值加起来大于一,则会通过
归一化处理后的结果。

explode -------- 指每一块饼距离圆心的距离。默认为0。如果大于0,则饼即会分裂出来,即“分裂饼形图”效果。

labels -------- 标签,即每一块饼图外侧显示的说明文字

autopct -------- 设置饼图百分比的格式。即字符串的格式,可以使用格式化字符串表达式或者format()函数的表达式。 不设定这个参数则不会显示百分比的字符串。

pctdistance --------指百分比的位置刻度,默认为0.6。

shadow --------布尔类型,饼图是否带阴影(立体感)。默认False不带。

labeldistance --------标记的绘制的位置,占半径长度的比例。默认为1.1,如果大于1则显示在饼的内侧。

startangle --------起始绘制角度,默认从x轴正方向逆时针画起。例如,设置为90则从y轴正方向画起。

radius -------- 饼图的半径,默认为1。

counterclock -------- 指针方向。布尔类型。默认为True,表示逆时针。如果为False则表示顺时针。

wedgeprops -------- wedge对象的属性(wedge翻译过来即三角木,楔子,即表示饼图中的每一块儿),可选参数,字典类型,默认为None。这个字典将会传递给wedge对象。如wedgeprops={‘linewidth’:2}表示wedge的线条宽度为2。

textprops -------- text标签文本的属性。也是一个字典类型,可选。默认为None。

center -------- 饼图的原点。

frame -------- 是否显示轴框架,布尔类型,默认不显示,False。如果为True则会显示轴框架。可以与grid()配合使用。通常不使用该参数,因为轴框架会干扰图像效果。

rotatelabels -------- 可选,旋转标签到指定角度。(“指定”的含义是,以该位置连接圆心的半径为水平基准。)


2. 饼图基本

绘制一张简单的饼图,图像上的百分数显示出一位小数。标签为[‘A类’, ‘B类’, ‘C类’, ‘D类’]。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
x = [10, 20, 35, 25]
plt.pie(x, autopct='%1.1f%%', labels=['A类', 'B类', 'C类', 'D类'])
plt.title("产品数量占比")
plt.show()

图像效果呈现如下:
       


3. 饼状图进阶

设置背景颜色为’#00E5EE’,
百分数显示一位小数,
四块的颜色依次为[‘red’, ‘green’, ‘purple’, ‘yellow’]
B类 在饼图中 向外分裂0.2个单位  explode=[0, 0.2, 0, 0],
从y轴正方向开始绘图  startangle=90,
饼图半径设为1.1  radius=1.1,
标签文本字体的大小为20,颜色为 ‘#8B1A1A’    textprops={‘fontsize’: 20, ‘color’: ‘#8B1A1A’}
显示阴影效果,
标签在半径0.6单位处    pctdistance=0.6,
每个标签都选择一定的角度   rotatelabels=True

代码如下:

import matplotlib.pyplot as plt
fig = plt.figure(1, facecolor='#00E5EE', figsize=(10, 8))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
x = [10, 20, 35, 25]
plt.pie(x,labels=['A类', 'B类', 'C类', 'D类'],autopct='%1.1f%%',colors=['red', 'green', 'purple', 'yellow'],explode=[0, 0.2, 0, 0],startangle=90,radius=1.1,textprops={'fontsize': 20, 'color': '#8B1A1A'},shadow=True,pctdistance=0.6,rotatelabels=True)
# 设置标题文本、y坐标(即竖直方向上的位置),字体大小、颜色
plt.title("产品数量占比", y=1.05, fontsize=25, color='#cc00ff')
plt.show()


4. 环形图

绘制环形图仍然使用plt.pie()方法,
只需要设置其中的wedgeprops参数的属性。

代码示例如下
在上例代码的基础上,取消分裂,
添加 wedgeprops={‘width’: 0.4, ‘edgecolor’: ‘k’}。
然后把百分数的位置pctdistance设置为0.8。

import matplotlib.pyplot as plt
fig = plt.figure(1, facecolor='#00E5EE', figsize=(10, 8))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
x = [10, 20, 35, 25]
plt.pie(x,labels=['A类', 'B类', 'C类', 'D类'],autopct='%1.1f%%',colors=['red', 'green', 'purple', 'yellow'],startangle=90,radius=1.1,textprops={'fontsize': 20, 'color': '#8B1A1A'},shadow=True,pctdistance=0.8,rotatelabels=True,wedgeprops={'width': 0.4, 'edgecolor': 'k'})
plt.title("产品数量占比", y=1.05, fontsize=25, color='#cc00ff')
plt.show()

代码执行效果如下:

5. 内嵌环形图

内嵌环形图,以内嵌一次为例。即两个圆环,需要调用两次plt.pie()方法。

通过wedgeprops参数设置不同的环形边界,通过radius设置不同的半径。
全局字体为SimHei(黑体)。标题部分的局部字体使用“华文琥珀”(将系统的字体文件STHUPO.TTF复制到当前目录下)。

import matplotlib.pyplot as plt
from matplotlib import font_managerfig = plt.figure(1, facecolor='#ffffcc', figsize=(6, 6))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
x1 = [10, 20, 35, 25]
x2 = [8, 32, 20, 40]
plt.pie(x1,autopct='%1.1f%%',colors=['red', 'green', 'blue', 'yellow'],startangle=90,radius=1,textprops={'fontsize': 16, 'color': 'purple'},pctdistance=0.85,rotatelabels=True,wedgeprops={'linewidth': 2, 'width': 0.3, 'edgecolor': 'k'})
plt.pie(x2,autopct='%1.1f%%',colors=['red', 'green', 'blue', 'yellow'],startangle=90,radius=0.7,textprops={'fontsize': 16, 'color': 'purple'},pctdistance=0.6,rotatelabels=True,wedgeprops={'linewidth': 2, 'width': 0.4, 'edgecolor': 'k'})
plt.title("产品数量占比", fontsize=25, color='purple', fontproperties=font_manager.FontProperties(fname='STHUPO.TTF'))
plt.legend(['A类', 'B类', 'C类', 'D类'], bbox_to_anchor=(0.9, 0.2))
plt.show()

程序执行效果如下:

        


本次分享就到这里,小啾感谢您的关注与支持!

python-matplotlib库绘制饼形图专题(从一般饼状图到内嵌环形图)相关推荐

  1. Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)

    文章目录 1.导入Matplotlib库 2.最常用的绘图函数plot 3.展示绘制完成的图像 4.保存绘制的图像 5.分割子绘图区域 6.设置横纵轴的坐标轴名称 7.设置图像名称 8.让图像中可以出 ...

  2. 使用Python matplotlib库绘制漏斗图

    pyecharts pyecharts有漏斗图的模板(点击链接),套用即可. 代码 from pyecharts import options as opts from pyecharts.chart ...

  3. python中matplotlib条形图-python matplotlib库绘制条形图练习题

    练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...

  4. python绘制条形图-python matplotlib库绘制条形图练习题

    练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...

  5. python画条形图并分类-python matplotlib库绘制条形图练习题

    练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...

  6. Python:利用matplotlib库绘制统计图(饼图、直方图、散点图、极坐标图和网格图)

    1.网格图 import matplotlib.pyplot as plt import numpy as np a=np.arange(0.0,5.0,0.02) plt.plot(a,np.cos ...

  7. Python中使用random随机函数与Matplotlib库绘制随机漫步图

    Python中使用random随机函数与Matplotlib库绘制随机漫步图 一.概述 随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件.这些不确定性事件给我 ...

  8. Python学习-Matplotlib库绘制简单点阵图、线型图操作

    Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...

  9. python的matplotlib库绘制条形图、散点图、饼图、折线图

    python的matplotlib库绘制条形图.散点图.饼图.折线图 当我们学会了爬虫,抓取到了一些数据,接下来就是做数据分析了.本文章介绍绘制图形的基本代码. 打开cmd用pip 安装,若输入pip ...

最新文章

  1. gitlab的安装和使用
  2. Facebook新推出AL语言,意在简化程序静态分析
  3. python经典算法小程序-Python爬虫系列之微信小程序逆向某优选爬虫签名算法!厉害...
  4. C++Study 指针详解
  5. 非常详细的transformer笔记,包括XLNet, MT-DNN, ERNIE, ERNIE2, RoBERTa
  6. pr渲染程序选哪个_PR的bug你遇到过几个?
  7. 排序算法之希尔排序(C/C++)
  8. Android开发笔记(八十三)多语言支持
  9. 《ggplot2:数据分析与图形艺术》,读书笔记
  10. 转行互联网,软件测试VS前端编程,到底那个是更好的选择?
  11. 语音识别HCLG解码
  12. 问题五十二:怎么用C++实现矩阵运算
  13. java常用设计模式总结
  14. SOUI中菜单的简单实现
  15. Spring Cloud 快速入门指南(二)
  16. methodinvocationexception: property ‘driverclassname‘ threw exception; nested exception is java.lang
  17. ECCV2018 papers
  18. 【如何下载钉钉云课堂视频】
  19. 用python写情书_用Python给喜欢人的发一封邮件吧(群发)
  20. 明源笔试题目--将一个正整数分解质因数

热门文章

  1. FFmpeg源代码简单学习:avformat_find_stream_info()
  2. html标签的记忆巧法,小学记忆单词的方法
  3. ps如何切html用的图片,前端实战(一)-----用ps把PSD切成HTML能用的图片
  4. .md文件转.pdf文件
  5. 张一鸣:积极乐观的心理期待,对成功有害!
  6. 信息论与编码_信息与编码系列(五)不可靠信道——决策法则、Hamming距离与信息论基本定理...
  7. C不会断句?【前后置,位,移位操作符详解】 b = ++c, c++, ++a, a++
  8. Face detection in color images, 彩色图像中的人脸检测
  9. android实现拍照及获取照片上传至接口
  10. 备忘_命令行查看电池损耗