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实现的简单算术游戏实例
May 26 Python
python实现ping的方法
Jul 06 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
Python timer定时器两种常用方法解析
Jan 20 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 Python
Python文件名匹配与文件复制的实现
Dec 11 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
Dec 15 Python
python的setattr函数实例用法
Dec 16 Python
python实现图片转字符画
Feb 19 Python
Python线程池与GIL全局锁实现抽奖小案例
Python之Matplotlib绘制热力图和面积图
Python matplotlib绘制雷达图
Python万能模板案例之matplotlib绘制甘特图
Python万能模板案例之matplotlib绘制直方图的基本配置
python创建字典及相关管理操作
python微信智能AI机器人实现多种支付方式
You might like
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
心术观后感
2015/06/11 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js