Python之matplotlib绘制饼图


Posted in Python onApril 13, 2022

饼图的概念

饼图英文学名为Sector Graph,又名Pie Graph。常用于统计学模块。2D饼图为圆形,手画时,常用圆规作图。

仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)显示为整个饼图的百分比。

Python之matplotlib绘制饼图

 连接数据库绘制饼图案例(pandas画图)

# -*- coding: utf-8 -*-
import pymysql
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']   #显示中文
plt.rcParams['axes.unicode_minus']=False       #正常显示负号
 
#连接Mysql数据库
db = pymysql.connect(host='localhost',  # 主机名
                    user='root',        # 用户名
                    password='root',    # 密码
                    database='mydb')  # 默认数据库
 
 
# 获取游标对象
cursor = db.cursor()
 
# 构造一个sql语句来查询统计数据
sql_str = "SELECT PROD_CATEGORY as 产品分类, ROUND(SUM(PRICE),2) as 总销售额, ROUND(SUM(PROFIT),2) as 总利润额  FROM orders WHERE FY=2019 GROUP BY PROD_CATEGORY"
 
# 执行sql语句
cursor.execute(sql_str)
 
# 获取查询结果
result = cursor.fetchall()
df = pd.DataFrame(result, columns=[cursor.description[i][0] for i in range(len(cursor.description)) ])
print(df)
df.set_index('产品分类').plot(kind='pie',y='总利润额',
                          #subplots=True, # 不使用y,画出所有列的饼图
                          figsize=(8,8),
                          
                         )

显示百分比

import matplotlib.pyplot as plt
 
sizes = df['总利润额']
labels = df['产品分类']
plt.figure(figsize=(5,5),dpi=120)
plt.pie(sizes,         # 每个扇区大小
        labels=labels, # 每个扇区标签
        autopct='%.2f%%', # 计算百分比格式 %格式%   %d%% 整数百分比  %.2f%% 小数点后保留2位的浮点数百分比
        
       )

Python之matplotlib绘制饼图

饼图常见参数

Python之matplotlib绘制饼图

扇区分离饼图

# 扇区分离
explode = [0 for i in range(len(sizes))]
explode[1]=0.1
plt.pie(sizes,labels=labels,explode=explode )
 
plt.title("饼图示例1")
plt.show()

Python之matplotlib绘制饼图

添加颜色

# 扇区颜色
colors=['r','g','b','#EEEEEE']
plt.pie(sizes,labels=labels,explode=explode,colors=colors )
 
plt.title("饼图示例2")
plt.show()

Python之matplotlib绘制饼图

添加阴影

# 添加阴影
shadow = True
plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=shadow)
plt.show()

Python之matplotlib绘制饼图

显示百分比

# 显示百分比
autopct='%.0f%%'
pctdistance=1.25
plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=shadow,autopct=autopct,pctdistance=pctdistance) 
plt.show()

Python之matplotlib绘制饼图

控制起始角度

# 起始角度
startangle=36 # (->0, <-180, 逆时针)
 
explode = [0 for i in range(len(sizes))]
explode[3]=0.1
shadow=False
plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=shadow,autopct=autopct,startangle=startangle) 
plt.show()

Python之matplotlib绘制饼图

将饼图放置在坐标轴

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['figure.dpi'] = 120
 
 
sizes = [10,10,10,70]
labels = ['A','B','C','D']
 
figure = plt.figure(figsize=(5,5),facecolor='#CCCCCC')
 
center=(5,4)  # 
 
plt.title("饼图详解示例")
pieces,labelses,pcts = plt.pie(sizes,labels=labels,center=center,frame=True,labeldistance=0.88,autopct='%.1f%%')
pieces[3].set(color='grey')
labelses[3].set(color='red')
pcts[3].set(color='green')

Python之matplotlib绘制饼图

双饼图显示

plt.rcParams['figure.dpi'] = 120
plt.figure(figsize=(8,4),facecolor='#EEEEEE')
 
center1=(1,0)
center2=(2.5,0)
 
plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=False,autopct=autopct,radius=0.5,
        center=center1,frame=True,labeldistance=0.9,rotatelabels=True) 
plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=shadow,autopct=autopct,radius=0.5,
        center=center2,frame=True,labeldistance=0.9,rotatelabels=False) 
plt.show()

Python之matplotlib绘制饼图

饼图万能模板

import matplotlib.pyplot as plt
# 添加数据
sizes = [15, 30, 45, 10]
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
# 配置颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
# 配置
explode = (0, 0.1, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=90)
plt.axis('equal')
# 设置全局中文字体
plt.rcParams['font.sans-serif'] = 'KaiTi' # 设置全局字体为中文 楷体
plt.rcParams['axes.unicode_minus'] = False # 不使用中文减号
# 设置图形上的各类主题值
# plt.suptitle('饼图',size=15,y=1.0)
plt.title("饼图", loc='center',size=15,y=1)
 
plt.title("王小王-123于2022年3月绘制", loc='right',size=10,y=1)
 
plt.show()

Python之matplotlib绘制饼图

到此这篇关于matplotlib绘制饼图的基本配置(万能模板案例)的文章就介绍到这了!

Python 相关文章推荐
Python创建系统目录的方法
Mar 11 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
Python冲顶大会 快来答题!
Jan 17 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
python中利用zfill方法自动给数字前面补0
Apr 10 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python 生成图形验证码的方法示例
Nov 11 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
python3 hdf5文件 遍历代码
May 19 Python
Python线程池与GIL全局锁实现抽奖小案例
Python之Matplotlib绘制热力图和面积图
Python matplotlib绘制雷达图
Python万能模板案例之matplotlib绘制甘特图
Python万能模板案例之matplotlib绘制直方图的基本配置
python创建字典及相关管理操作
python微信智能AI机器人实现多种支付方式
You might like
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
php单例模式实现(对象只被创建一次)
2012/12/05 PHP
php解析url的三个示例
2014/01/20 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
jQuery知识点整理
2015/01/30 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
vue实现循环滚动列表
2020/06/30 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
pandas数据拼接的实现示例
2020/04/16 Python
应届毕业生就业自荐信
2013/10/26 职场文书
安全标准化实施方案
2014/02/20 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
服务行业口号
2014/06/11 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
心灵捕手观后感
2015/06/02 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript