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连接mysql数据库的正确姿势
Feb 03 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
matplotlib中legend位置调整解析
Dec 19 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
Python使用OpenCV进行标定
May 08 Python
详解python分布式进程
Oct 08 Python
Python Flask 搭建微信小程序后台详解
May 06 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
Python pip install如何修改默认下载路径
Apr 29 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
Python线程池与GIL全局锁实现抽奖小案例
Python之Matplotlib绘制热力图和面积图
Python matplotlib绘制雷达图
Python万能模板案例之matplotlib绘制甘特图
Python万能模板案例之matplotlib绘制直方图的基本配置
python创建字典及相关管理操作
python微信智能AI机器人实现多种支付方式
You might like
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
进一步理解Python中的函数编程
2015/04/13 Python
python反转列表的三种方式解析
2019/11/08 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Python容器类型公共方法总结
2020/08/19 Python
Python用SSH连接到网络设备
2021/02/18 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
一些Unix笔试题和面试题
2012/09/25 面试题
大学生创业感言
2014/01/25 职场文书
法学院毕业生求职信
2014/06/25 职场文书
公务员培的训心得体会
2014/09/01 职场文书
基层党员对照检查材料
2014/09/24 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
Go语言空白表示符_的实例用法
2021/07/04 Golang