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线程、进程和协程详解
Jul 19 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python实现的矩阵类实例
Aug 22 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
numpy中loadtxt 的用法详解
Aug 03 Python
python多线程http压力测试脚本
Jun 25 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
Python shutil模块用法实例分析
Oct 02 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
Python线程池与GIL全局锁实现抽奖小案例
Python之Matplotlib绘制热力图和面积图
Python matplotlib绘制雷达图
Python万能模板案例之matplotlib绘制甘特图
Python万能模板案例之matplotlib绘制直方图的基本配置
python创建字典及相关管理操作
python微信智能AI机器人实现多种支付方式
You might like
PHP开发入门教程之面向对象
2006/12/05 PHP
php简单提示框alert封装函数
2010/08/08 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
JS实现li标签的删除
2019/04/12 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Python集合操作方法详解
2020/02/09 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
如何保障Web服务器安全
2014/05/05 面试题
给老师的道歉信
2014/01/11 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript