matplotlib绘制饼图的基本配置(万能模板案例)
目录
饼图的概念连接数据库绘制饼图案例(pandas画图)显示百分比饼图常见参数扇区分离饼图添加颜色添加阴影显示百分比控制起始角度将饼图放置在坐标轴双饼图显示饼图万能模板饼图的概念
饼图英文学名为Sector Graph,又名Pie Graph。常用于统计学模块。2D饼图为圆形,手画时,常用圆规作图。
仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)显示为整个饼图的百分比。
连接数据库绘制饼图案例(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位的浮点数百分比 )
饼图常见参数
扇区分离饼图
# 扇区分离 explode = [0 for i in range(len(sizes))] explode[1]=0.1 plt.pie(sizes,labels=labels,explode=explode ) plt.title("饼图示例1") plt.show()
添加颜色
# 扇区颜色 colors=["r","g","b","#EEEEEE"] plt.pie(sizes,labels=labels,explode=explode,colors=colors ) plt.title("饼图示例2") plt.show()
添加阴影
# 添加阴影 shadow = True plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=shadow) plt.show()
显示百分比
# 显示百分比 autopct="%.0f%%" pctdistance=1.25 plt.pie(sizes,explode=explode,labels=labels,colors=colors,shadow=shadow,autopct=autopct,pctdistance=pctdistance) plt.show()
控制起始角度
# 起始角度 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()
将饼图放置在坐标轴
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")
双饼图显示
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()
饼图万能模板
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()
到此这篇关于matplotlib绘制饼图的基本配置(万能模板案例)的文章就介绍到这了,更多相关matplotlib绘制饼图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?