Matplotlib学习
这两天参加开源组织DataWhale组织的一个matplotlib学习活动,一些学习笔记就记录在此了,欢迎大家一起讨论。其实以前也系统学习过,不过用得少,后来慢慢又忘了,虽然要用的时候可以再查,但是效率还是比较低,希望这次学习再加深下记忆。
【课程链接】
https://github.com/datawhalechina/fantastic-matplotlib
【备份链接】
https://gitee.com/datawhalechina/fantastic-matplotlib
第一回:Matplotlib初相识
记录的内容主要多是自己的理解点以及平时用到的地方,有些内容会更具体些有些具体内容可能会简略些,主要要注意的点可能会以注释的形式展示,觉得重要的会详细描述,系统内容可以参考上面的学习链接。
思维导图
本章节的主要笔记分为以下三部分:
- matplotlib画图的两种画法:①fig,ax = plt.subplots(),ax设置图的属性;②plt.plot(),直接plt设置图的属性;
- 画图的常见几种情况:①单图;②多个单图(有子图的情况);③组合图(一张图,里面多个对象的内);
- 常用模板:①文字模板;②图文模板;
1、matplotlib绘图的两种画法
教程中提及了这两种绘图的方法:
第一种画法:
fig,ax = plt.subplots()
等价于以下两句:
fig = plt.figure()
ax = plt.subplot()
fig代表绘图窗口(Figure);
在有多个子图的时候,指定哪个子图;
具体内容可参考:https://blog.csdn.net/htuhxf/article/details/82986440
ax代表这个绘图窗口上的坐标系(axis),一般会继续对ax进行操作;
一般只对这个操作,设置横纵坐标、title等
例子
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 第一个参数是x,第2个参数是y
plt.show() #如果是在pycharm要显示一下,可能在jupyter不用,这个比较少用,不太清楚
第二种画法:
例子
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.show()
2、复杂例子
2.1 画单图
3、常用模板
3.1、文字模板
介绍两种模板,看了其他人很多用第二种写法,推荐选择一种,然后记住记住就行。
- 模板1:fig, ax = plt.subplots()
# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像是进行设置
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 定义布局, 这一模块的扩展参考第三章进一步学习
fig, ax = plt.subplots()
# step4 绘制图像, 这一模块的扩展参考第二章进一步学习
ax.plot(x, y, label='linear')
# step5 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
plt.show()
- 模板2:plt.plot()
# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像是进行设置
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 定义布局, 这一模块的扩展参考第三章进一步学习
# fig, ax = plt.subplots()
# step4 绘制图像, 这一模块的扩展参考第二章进一步学习
plt.plot(x, y, label='linear')
# step5 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot") # title
plt.legend() # 图例
# 得先保存后再show,不能show后再保存
plt.show()