matplotlib实战之饼图绘制详解

 更新时间:2023年08月24日 09:44:09   作者:databook  
饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,这篇文章主要为大家详细介绍了如何使用Matplotlib绘制饼图,需要的小伙伴可以参考下

饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表。

在饼图中,每个扇形的弧长(以及圆心角和面积)大小,表示该种类占总体的比例,且这些扇形合在一起刚好是一个完全的圆形。

饼图最显著的功能在于表现“占比”。

习惯上,人们通过比较饼图扇形的大小来获得对数据的认知。

使用饼图时,须确认各个扇形的数据加起来等于100%;

且避免扇区超过5个,扇形的排布顺序,一般情况下,将最大的扇形放在12点钟方向。

1. 主要元素

饼图的主要元素包括:

  • 饼片(扇形):饼图由多个饼片组成,每个饼片的大小代表了对应部分在总体中的比例关系。
  • 标签:饼图中的每个饼片通常都会有一个标签,用于表示对应部分的具体名称或者数值。
  • 图例:图例是饼图的一部分,用于解释每个饼片所代表的含义,帮助观察者理解图表。
  • 百分比:饼图通常会显示每个饼片所占的百分比,以便更直观地展示比例关系。

2. 适用的场景

饼图适用的场景包括:

  • 比例展示:展示一个总体中各个部分的比例关系,例如市场份额、人口比例等。
  • 分类数据:展示分类数据的比例关系,例如某个产品的销售额占比、不同地区的人口分布等。
  • 简单数据分析:简单的数据分析,帮助观察者快速了解数据的分布情况和相对大小。
  • 强调重点:突出某个部分的重要性,引起观察者的注意,例如某个产品的关键特点或者某个地区的重要经济指标。

3. 不适用的场景

饼图不适用的场景包括:

  • 多个分类变量:当数据包含多个分类变量时,饼图可能会变得复杂和难以理解,不适合展示复杂的关系。
  • 数据过于细分:当数据被分成过多的小块时,饼图可能会变得拥挤和难以辨认,不适合展示细分数据。
  • 数据差异较小:当各个部分的差异较小,比例接近时,饼图可能无法清晰地展示差异,不适合展示相似的数据。
  • 需要精确数值比较:饼图通常只能展示相对比例关系,无法提供精确的数值比较,不适合需要准确数值的场景。

4. 分析实战

本次用饼图统计展示 不同人口规模的城市数量 的统计情况。

4.1. 数据来源

数据来自国家统计局公开的城市概况数据,可从下面的网址下载: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饼图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Python实现对PDF文件的OCR识别

    基于Python实现对PDF文件的OCR识别

    大家可能听说过使用Python进行OCR识别操作。在Python中,最出名的库便是Google所资助的tesseract。利用tesseract可以很轻松地对图像进行识别。现在问题来了,如果想对一个PDF文档进行OCR识别,该怎么做呢?下面一起来看看。
    2016-08-08
  • Django 简单实现分页与搜索功能的示例代码

    Django 简单实现分页与搜索功能的示例代码

    这篇文章主要介绍了Django 简单实现分页与搜索功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • opencv python模糊影像检测效果

    opencv python模糊影像检测效果

    这篇文章主要介绍了opencv python模糊影像检测,本文只使用cv2和shutil库,若想直接使用该脚本需安装这两个库,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 详解Python requests 超时和重试的方法

    详解Python requests 超时和重试的方法

    这篇文章主要介绍了详解Python requests 超时和重试的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • PyTorch实现图像识别实战指南

    PyTorch实现图像识别实战指南

    图像识别是从给定图像中提取有意义的信息(例如图像内容)的过程,下面这篇文章主要给大家介绍了关于PyTorch实现图像识别的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • pyodps中的apply用法及groupby取分组排序第一条数据

    pyodps中的apply用法及groupby取分组排序第一条数据

    这篇文章主要介绍了pyodps中的apply用法及groupby取分组排序第一条数据,问绽放围绕主题展开详细的内容介绍,具有一定的参考价值需要的小伙伴可以参考一下
    2022-05-05
  • Python算法应用实战之栈详解

    Python算法应用实战之栈详解

    栈是什么,你可以理解为一种先入后出的数据结构(First In Last Out),一种操作受限的线性表。下面这篇文章主要给大家介绍了Python中栈的应用实战,文中给出了多个实例,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • Keras SGD 随机梯度下降优化器参数设置方式

    Keras SGD 随机梯度下降优化器参数设置方式

    这篇文章主要介绍了Keras SGD 随机梯度下降优化器参数设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python绘图系统之自定义一个坐标设置控件

    Python绘图系统之自定义一个坐标设置控件

    这篇文章主要为大家详细介绍了Python如何编写一个绘图系统,可以实现自定义一个坐标设置控件,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-08-08
  • Python实现定时自动备份文件

    Python实现定时自动备份文件

    随着数据的不断增长,文件备份变得越来越重要,这篇文章主要为大家详细介绍了如何使用Python实现定时自动备份文件功能,需要可以了解下
    2024-12-12

最新评论