美文网首页
『Python 干货』#3 Matplotlib(简明)

『Python 干货』#3 Matplotlib(简明)

作者: Hwcoder | 来源:发表于2021-10-23 23:07 被阅读0次

访问博客查看 本文 最新内容,排版更美观ヾ(•ω•`)o 如有错误欢迎指出~

Python 系列学习笔记:

学习 Machine Learning 的时候发现需要用许多矩阵运算和画图的库,本文将以实用主义的方式记录每次遇到的新用法。

2021 年贵系的暑培新增了「科学计算」内容,本文部分内容参考了清华 LZJ 同学的教程。本文将持续更新。

Matplotlib 基础

绘图时最常用的模块是 Matplotlib 中的 pyplot 模块。绘图时先调用相关绘图函数,设置图像各种细节,最后调用 plt.show() 显示图片。

这时会出现一个基于 Qt 实现的交互窗口,程序执行到 plt.show() 时阻塞。在交互窗口中可以进一步调整图片格式细节或保存图片,关闭窗口后程序继续运行。下面以一个例子说明:

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-4, 4, 30)  # [-4, 4] 中长度为 30 的等差数列
y = np.sin(x)               # 获得 sin 值
plt.plot(x, y)              # 以 x 为自变量,y 为因变量,绘制折线图
plt.show()                  # 显示图像,程序阻塞

格式字符串

与 Matlab 相似,Matplotlib 使用事先约定好的字符串代表绘图格式,将其写入 plt.plot() 即可,如 plt.plot(x, y, 'bo') 即蓝色圆圈标记。

  • color:绘制点的颜色,支持以下缩写,还可以用 c='#000' 指定。
字符 颜色 字符 颜色 字符 颜色 字符 颜色
b 蓝色 r 红色 m 洋红色 k 黑色
g 绿色 c 青色 y 黄色 w 白色
  • marker:绘制点的形状。
字符 标记 字符 标记 字符 标记 字符 标记
. 点标记 > 右三角标记 p 五边形标记 D 菱形标记
, 像素标记 1 三叉戟标记 * 星形标记 d 菱形标记
o 圆圈标记 2 三叉戟标记 h 六角形标记 竖线标记
v 倒三角标记 3 三叉戟标记 H 六角形标记 _ 横线标记
^ 正三角标记 4 三叉戟标记 + +标记
< 左三角标记 s 正方形标记 x x标记
  • line:绘制线的形状。
字符 格式 字符 格式 字符 格式 字符 格式
- 实线 -- 虚线 -. 点划线 : 点线

特定类型图

下面是一些常用的绘图函数。更多官网案例:https://matplotlib.org/stable/gallery/index.html

折线图 plot()

plt.plot() 用于绘制折线图,需要一系列点作为因变量和自变量,函数接口如下:

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

观察接口,可以发现有以下的用法:

  • 传入两个等长数组或列表,前者是自变量,后者是因变量。
  • 只传入一个数组或列表,自变量默认从 0 开始整数递增。
  • 传入两个列表,各包含两个值,可以绘制一条直线。

散点图 scatter()

plt.scatter() 用于绘制散点图,需要两个等长数组或列表,函数接口如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, **kwargs)

其中只有 xy 为必填项,s 代表每个点的大小,可以是常数也可以是列表。

子图 subplot()

plt.subplot() 用于在一张图里绘制多个子图,函数接口如下:

matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)

其中只有 nrowncols 表示总共有多少子图,index 代表其中第几个。如:plt.subplot(2,2,1),也可以缩写为 plt.subplot(221)

紧跟在 plt.subplot() 语句后面的语句绘制的就是 index 所指向的图,绘制完再次使用 plt.subplot() 语句切换到下一张子图。

其他辅助库

除了上述的数据分析第三方库,还有一些辅助工具库也许有用。因为不知道记在哪里,就先放在本节。

Time

time 是 Python 中处理时间的标准库,提供系统级精确计时功能(可以用于程序性能分析)。其主要功能分为三块:时间获取、时间格式化、程序计时,这里介绍计时相关内容。

  • sleep(s)s 为休眠时间,单位秒,可以是浮点数。
  • perf_counter():返回一个 CPU 级别的精确时间计数值,单位为秒。

后者的使用由于计数器起点不确定,连续调用求差值才有意义:

import time
import numpy as np

arr = np.arange(100000000)
start = time.perf_counter()     # 计数器起点
arr = arr * 2
end = time.perf_counter()       # 计数器终点
print('numpy time cost: %.3f s' % (end - start))

pipreqs

当我们写好一个 Python 项目之后,如果要开源代码,为了让别人能快速运行项目,一般可以提供一个 requirements.txt 的,用以配置环境。

pipreqs 是用于自动生成上述文件的一个第三方库,使用 pip install pipreqs 安装,进入项目根目录,执行 pipreqs ./ 即可。如果出现编码错误,可以指定编码方式解决:

pipreqs ./ --encoding utf-8

其他人则可以使用以下命令配置环境:

pip install -r requirements.txt

相关文章

网友评论

      本文标题:『Python 干货』#3 Matplotlib(简明)

      本文链接:https://www.haomeiwen.com/subject/uwnlaltx.html