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多进程并发(multiprocessing)用法实例详解
Jun 02 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python之super的使用小结
Aug 13 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
Python3实现定时任务的四种方式
Jun 03 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
python能做什么 python的含义
Oct 12 Python
Python实现动态循环输出文字功能
May 07 Python
详解python变量与数据类型
Aug 25 Python
Python线程池与GIL全局锁实现抽奖小案例
Python之Matplotlib绘制热力图和面积图
Python matplotlib绘制雷达图
Python万能模板案例之matplotlib绘制甘特图
Python万能模板案例之matplotlib绘制直方图的基本配置
python创建字典及相关管理操作
python微信智能AI机器人实现多种支付方式
You might like
PHP中路径问题的解决方案
2006/10/09 PHP
十天学会php之第四天
2006/10/09 PHP
用文本文件制作留言板提示(上)
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php自动加载的两种实现方法
2010/06/21 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
通过数据库向Django模型添加字段的示例
2015/07/21 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
保安拾金不昧表扬信
2014/01/15 职场文书
运动会领导邀请函
2014/02/05 职场文书
学习雷锋标语
2014/06/25 职场文书
体育课外活动总结
2014/07/08 职场文书
2014年就业工作总结
2014/11/26 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python