python-matplotlib库绘制饼形图专题(从一般饼状图到内嵌环形图)
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库绘制饼形图专题(从一般饼状图到内嵌环形图)相关推荐
- Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)
文章目录 1.导入Matplotlib库 2.最常用的绘图函数plot 3.展示绘制完成的图像 4.保存绘制的图像 5.分割子绘图区域 6.设置横纵轴的坐标轴名称 7.设置图像名称 8.让图像中可以出 ...
- 使用Python matplotlib库绘制漏斗图
pyecharts pyecharts有漏斗图的模板(点击链接),套用即可. 代码 from pyecharts import options as opts from pyecharts.chart ...
- python中matplotlib条形图-python matplotlib库绘制条形图练习题
练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...
- python绘制条形图-python matplotlib库绘制条形图练习题
练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...
- python画条形图并分类-python matplotlib库绘制条形图练习题
练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...
- 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 ...
- Python中使用random随机函数与Matplotlib库绘制随机漫步图
Python中使用random随机函数与Matplotlib库绘制随机漫步图 一.概述 随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件.这些不确定性事件给我 ...
- Python学习-Matplotlib库绘制简单点阵图、线型图操作
Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...
- python的matplotlib库绘制条形图、散点图、饼图、折线图
python的matplotlib库绘制条形图.散点图.饼图.折线图 当我们学会了爬虫,抓取到了一些数据,接下来就是做数据分析了.本文章介绍绘制图形的基本代码. 打开cmd用pip 安装,若输入pip ...
最新文章
- gitlab的安装和使用
- Facebook新推出AL语言,意在简化程序静态分析
- python经典算法小程序-Python爬虫系列之微信小程序逆向某优选爬虫签名算法!厉害...
- C++Study 指针详解
- 非常详细的transformer笔记,包括XLNet, MT-DNN, ERNIE, ERNIE2, RoBERTa
- pr渲染程序选哪个_PR的bug你遇到过几个?
- 排序算法之希尔排序(C/C++)
- Android开发笔记(八十三)多语言支持
- 《ggplot2:数据分析与图形艺术》,读书笔记
- 转行互联网,软件测试VS前端编程,到底那个是更好的选择?
- 语音识别HCLG解码
- 问题五十二:怎么用C++实现矩阵运算
- java常用设计模式总结
- SOUI中菜单的简单实现
- Spring Cloud 快速入门指南(二)
- methodinvocationexception: property ‘driverclassname‘ threw exception; nested exception is java.lang
- ECCV2018 papers
- 【如何下载钉钉云课堂视频】
- 用python写情书_用Python给喜欢人的发一封邮件吧(群发)
- 明源笔试题目--将一个正整数分解质因数
热门文章
- FFmpeg源代码简单学习:avformat_find_stream_info()
- html标签的记忆巧法,小学记忆单词的方法
- ps如何切html用的图片,前端实战(一)-----用ps把PSD切成HTML能用的图片
- .md文件转.pdf文件
- 张一鸣:积极乐观的心理期待,对成功有害!
- 信息论与编码_信息与编码系列(五)不可靠信道——决策法则、Hamming距离与信息论基本定理...
- C不会断句?【前后置,位,移位操作符详解】 b = ++c, c++, ++a, a++
- Face detection in color images, 彩色图像中的人脸检测
- android实现拍照及获取照片上传至接口
- 备忘_命令行查看电池损耗