【matplotlib 实战】--饼图
饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表。
在饼图中,每个扇形的弧长(以及圆心角和面积)大小,表示该种类占总体的比例,且这些扇形合在一起刚好是一个完全的圆形。
饼图最显著的功能在于表现“占比”。
习惯上,人们通过比较饼图扇形的大小来获得对数据的认知。
使用饼图时,须确认各个扇形的数据加起来等于100%;
且避免扇区超过5个,扇形的排布顺序,一般情况下,将最大的扇形放在12点钟方向。
1. 主要元素
饼图的主要元素包括:
- 饼片(扇形):饼图由多个饼片组成,每个饼片的大小代表了对应部分在总体中的比例关系。
 - 标签:饼图中的每个饼片通常都会有一个标签,用于表示对应部分的具体名称或者数值。
 - 图例:图例是饼图的一部分,用于解释每个饼片所代表的含义,帮助观察者理解图表。
 - 百分比:饼图通常会显示每个饼片所占的百分比,以便更直观地展示比例关系。
 

2. 适用的场景
饼图适用的场景包括:
- 比例展示:展示一个总体中各个部分的比例关系,例如市场份额、人口比例等。
 - 分类数据:展示分类数据的比例关系,例如某个产品的销售额占比、不同地区的人口分布等。
 - 简单数据分析:简单的数据分析,帮助观察者快速了解数据的分布情况和相对大小。
 - 强调重点:突出某个部分的重要性,引起观察者的注意,例如某个产品的关键特点或者某个地区的重要经济指标。
 
3. 不适用的场景
饼图不适用的场景包括:
- 多个分类变量:当数据包含多个分类变量时,饼图可能会变得复杂和难以理解,不适合展示复杂的关系。
 - 数据过于细分:当数据被分成过多的小块时,饼图可能会变得拥挤和难以辨认,不适合展示细分数据。
 - 数据差异较小:当各个部分的差异较小,比例接近时,饼图可能无法清晰地展示差异,不适合展示相似的数据。
 - 需要精确数值比较:饼图通常只能展示相对比例关系,无法提供精确的数值比较,不适合需要准确数值的场景。
 
4. 分析实战
本次用饼图统计展示 不同人口规模的城市数量 的统计情况。
4.1. 数据来源
数据来自国家统计局公开的城市概况数据,可从下面的网址下载:
https://databook.top/nation/A0B
使用其中的 A0B01.csv 文件(分机构类型法人单位数)
fp = "d:/share/A0B01.csv"
df = pd.read_csv(fp)
df

4.2. 数据清理
最新的2022年数据缺失较多,所以选取2021年的数据进行分析。
data = df[df["sj"] == 2021]
data

第一条数据全部城市情况,统计需要去除,另外,指标的名称太长,统计前也可以调整下。
接着上面过滤后的数据继续数据清洗:
data = data.reset_index() # 重置索引
data = data.iloc[1:]  # 忽略第一条合计的数据
#调整指标名称,删除多余的文字
data["zbCN"] = data["zbCN"].str.replace("城市市辖区年末总", "")
data["zbCN"] = data["zbCN"].str.replace("地级及以上", "")
data

最后得到的数据有6条,饼图一般来说数据不要超过5个,6个也还行,再多就影响显示效果了。
4.3. 分析结果可视化
with plt.style.context("seaborn-v0_8"):
    fig = plt.figure()
    ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
    ax.pie(data["value"], autopct="%1.1f%%")
    ax.legend(
        data["zbCN"].tolist(),
        loc="center",
        bbox_to_anchor=(1, 0, 0.5, 1),
    )

从分析结果可看出,50万~200万人口的城市超过一半,是大多数的城市规模。
两端的情况(人口20万以下,或者400万以上)的城市占比最小。
【matplotlib 实战】--饼图的更多相关文章
- 使用matplotlib画饼图
		
import matplotlib.pyplot as pltx = [4, 9, 21, 55, 30, 18]labels = ['math', 'history', 'chemistry', ' ...
 - Matplotlib学习---用matplotlib画饼图/面包圈图(pie chart, donut chart)
		
我在网上随便找了一组数据,用它来学习画图.大家可以直接把下面的数据复制到excel里,然后用pandas的read_excel命令读取.或者直接在脚本里创建该数据. 饼图: ax.pie(x,labe ...
 - (转)matplotlib实战
		
原文:https://www.cnblogs.com/ws0751/p/8361330.html https://www.cnblogs.com/ws0751/p/8313017.html---mat ...
 - matplotlib实战
		
plt.imshow(face_image.mean(axis=2),cmap='gray') 图片灰度处理¶ size = (m,n,3) 图片的一般形式就是这样的 rgb 0-255 jpg图 ...
 - matplotlib系列——饼图
		
import matplotlib.pyplot as plt import numpy as np import matplotlib import sys 1.主体函数 #饼图 def die(l ...
 - matplotlib 画饼图
		
有个瑕疵,某一块儿比例过小时,文字会重叠. 1 def pizza(data,labs,title): 2 import matplotlib 3 import matplotlib.pyplot a ...
 - python学习之matplotlib实战2
		
import numpy as np import matplotlib.pyplot as plt def main(): #scatter fig = plt.figure() ax = fig. ...
 - python学习之matplotlib实战
		
import numpy as np def main(): # print("hello") # line import matplotlib.pyplot as plt x = ...
 - 使用matplotlib绘图(三)之饼图
		
# 使用matplotlib绘制饼图 import numpy as np import matplotlib.pyplot as plt # 设置全局字体 plt.rcParams['font.sa ...
 - Matplotlib学习---matplotlib的一些基本用法
		
Matplotlib有两种接口,一种是matlab风格接口,一种是面向对象接口.在这里,统一使用面向对象接口.因为面向对象接口可以适应更复杂的场景,在多图之间进行切换将变得非常容易. 首先导入matp ...
 
随机推荐
- 如何构建高效、可观的系统「GitHub 热点速览」
			
经典老项目 system-design 教你如何设计一个健壮的系统,新项目 noodle 教你如何提升教育效率,而后者甚至单日获得了 1,600 star,刚开源就获得了 6k+ 的 star. 除了 ...
 - 【小小Demo】微信公众号如何接入微信机器人
			
微信对话开放平台文档 官方文档 平台简介 微信对话开放平台开放了微信在对话领域积累多年的的智能对话技术,开发者及非开发者可简单.快速地搭建智能对话机器人(智能客服), 并接入公众号.小程序等,为业务赋 ...
 - 【环境搭建】多版本的jdk共存
			
问题来源 burpsuite 2021需要使用Java 9及以上版本,而其他工具需要Java 8,因此需要两个版本共存,并且做到除了burpsuite以外的工具默认使用Java 8打开. 需要的软件 ...
 - DevOps实战:使用GitLab+Jenkins+Kubernetes(k8s)建立CI/CD解决方案
			
目录 一.系统环境 二.前言 三.DevOps简介 四.CI/CD简介 五.安装并配置docker参数 六.使用registry搭建镜像仓库 七.安装部署gitlab代码仓库 7.1 创建gitlab ...
 - Linux基础—vmvare安装及centos7安装
			
Linux基础 # https://zhuanlan.zhihu.com/p/429509333 # 一 什么是操作系统 Operating System(操作系统) 简称OS Windows,Mac ...
 - 2022-02-08 IValueConverter和StringFormat
			
主页 后台 stringFormat
 - 2021-7-6 Vue实现记事本功能
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
 - The language server needs at least PHP 7.1 installed. Version found: 7.0.10
			
解决方案: 打开VS Code 文件 -> 首选项 -> 设置 -> 在 settings.json 中编辑 在 settings.json 中,加入: "php.exec ...
 - 这些年写过的花式sql - 第一句 删除重复无效的记录
			
这些年写过的花式sql - 第一句 删除重复无效的记录 写好复杂sql可以减少代码量,经过写这些年的后台统计,我学着像写代码一样的设计和尝试sql.现整理如下: 本来想一次性写完的,不过那写起来和看起 ...
 - python教程 入门学习笔记 第4天 数据类型 获取数据类型 字符串拼接
			
数据类型 1.能直接处理的基本数据类型有5个:整型.浮点型.字符串.布尔值.空 1)整型(int)=整数,例如0至9,-1至-9,100,-8180等,人数.年龄.页码.门牌号等 没有小数位的数字,是 ...