type
status
date
slug
summary
tags
category
icon
password
😀
Matplotlib 是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成曲线图饼图直方图功率谱条形图散点图箱形图等。 在本部分中,主要介绍常见统计图的绘制。

📝 主旨内容

1.曲线图

作为绘图程序的Hello World,我们将首先绘制一条简单的曲线。同时还将简单介绍matplotlib的工作原理。

1.1 曲线图的绘制

notion image
图1-1 由于 matplotlib 它只专注于绘图,因此如果想从文件中读取输入或进行一些中间计算,那么必须使用 Python 模块, 但不用担心, matplotlib 与其他模块具有良好的兼容性,并不涉及过多的技巧。 例如,要生成大量统计图形,可能需要使用科学计算包,如 Numpy 和 Python 的文件读取I/O模块。在接下来的讲解中会给出相应的示例。
notion image

1.2 结合Numpy库,绘制曲线图

notion image
notion image

1.3 绘制多曲线图

很多时候我们需要对比多组数据,以发现数据间的异同,此时就需要在一张图片上绘制多条曲线——多曲线图, 下图展示了在同一图片中绘制函数 y=x、y=x^2、y=loge(x) 以及 y=sin(x) :
Tips: 一条曲线的绘制需要调用一次 plt.plot(), 而 plt.show() 只需调用一次。 这种延迟呈现机制是 matplotlib 的核心,我们可以声明在任何时间绘制图形,但只有在调用 plt.show() 时才会渲染显示图形。 为了更好的说明这种延迟呈现机制,编写以下代码:
可以看到,尽管其中一个 plt.plot() 是在 plot_func 函数中调用的,它对图形的呈现没有任何影响, 因为 plt.plot() 只是声明了我们要呈现的内容,但还没有执行渲染。 因此可以使用此特性结合 for 循环、条件判断等语法完成复杂图形的绘制,同时也可以在同一张图中组合不同类型的统计图。
notion image
notion image

1.4 读取数据文件绘制曲线图

很多情况下数据都是存储于文件中,因此,我们需要首先读取文件中的数据,再进行绘制。 说明起见,以 .txt 文件为例,其他诸如 Excel、CSV 文件可以使用 pandas、numpy 等库进行读取。 假设存在 data.txt 文件如下: 0 1 1 2 2 5 4 17 5 26 6 37 读取数据和绘制的代码如下:
notion image

2.散点图

当绘制曲线图时,我们假设点与点之间存在序列关系。 而散点图是简单地绘制点,它们之间并不存在连接。
notion image

3.条形图

条形图具有丰富的表现形式,常见的类型包括单组条形图,多组条形图,堆积条形图和对称条形图等。

3.1 单组条形图

条形图的每种表现形式都可以绘制成垂直条形图或水平条形图, 以单组条形图的两种绘制方式为例:
notion image
notion image
notion image

3.2 多组条形图

当需要比较不同年份相应季度的销量等此类需求时,我们可能需要多组条形图。
notion image

3.3 堆积条形图

通过使用 plt.bar() 函数中的可选参数,可以绘制堆积条形图。
notion image
notion image

3.4 对称条形图

一个简单且有用的技巧是对称绘制两个条形图。 例如想要绘制不同年龄段的男性与女性数量的对比:
图中女性人口的条形图照常绘制。然而,男性人口的条形图的条形向左延伸,而不是向右延伸。 可以使用数据的负值来快速实现对称条形图的绘制。
notion image

4.饼图

饼图可以用于对比数量间的相对关系:
Tips: plt.pie() 函数将一系列值作为输入,将值传递给 matplolib, 它就会自动计算各个值在饼图中的相对面积,并进行绘制。
notion image

5.直方图

直方图是概率分布的图形表示。事实上,直方图只是一种特殊的条形图。 我们可以很容易地使用 matplotlib 的条形图函数,并进行一些统计运算来生成直方图。 但是,直方图非常有用,因此 matplotlib 提供了一个更加方便的函数:
Tips: plt.hist() 函数的作用是:获取一系列值作为输入。值的范围将被划分为大小相等的范围(默认情况下数量为10), 然后生成条形图,一个范围对应一个条柱,一个条柱的高度是相应范围内中的值的数量,条柱的数量由可选参数 bins 确定。
notion image

6.箱形图

箱形图可以通过方便地显示一组值的中位数、四分位数、最大值和最小值来比较值的分布。
Tips: plt.boxplot() 函数的作用是:获取一组值,并自动计算平均值、中位数和其他统计量。
notion image
箱形图描述: 图中黄线是分布的中位数。 方形箱框包括从下四分位数Q1 到上四分位数Q3 的 50% 的数据。 下盒须的下四分位延伸到 1.5(Q3-Q1)。 上盒须从上四分位延伸至 1.5(Q3-Q1)。 离盒须较远的数值用圆圈标记。
要在单个图形中绘制多个箱形图,对每个箱形图调用一次 plt.boxplot() 是不可行。 它会将所有箱形图画在一起,形成一个混乱的、不可读的图形。 如果想要到达符合要求的效果,只需在一次调用 plt.boxplot() 中,同时绘制多个箱形图即可,如下所示:
notion image

7.三角网格图

处理空间位置时会出现网格图。除了显示点之间的距离和邻域关系外,三角网格图也是表示地图的一种方便方法。
Tips: 代码中导入了 matplotlib.tri 模块,该模块提供了从点计算三角网格的辅助函数。
notion image

🤗 总结归纳

本文主要介绍常见统计图的绘制,相关测试代码已经配套提供,读者可以自己进行测试。

📎 参考文章

 
💡
有关 Python-Matplotlib 安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
Python-NumPy学习笔记(主要记录各函数及其用法)数据结构课程设计——EXT2文件系统(本人原版项目书)
  • Giscus
  • Cusdis
  • Utterance
Naipings
Naipings
一个普通的大学生,分享自己学习的“有趣”知识
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉 感谢您的支持 🎉
-- 点击收藏不迷路 ---
👏欢迎更新体验👏