一、认识matplotlib
Matplotlib 是一个python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
二、简单的例子
没有系统学习matplotlib之前,我很少用到axe,画图都是直接plt.plot。现在知道axe表示指定区域的坐标系,合理使用axe可以提高画图的质量和效率。
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
fig,axe = plt.subplots()
axe.plot(np.sort(np.random.randint(1,10,size=6)),np.random.randint(1,10,size=6))
当然也可以直接使用plt.plot绘制图像,代码为:
plt.plot(np.sort(np.random.randint(1,10,size=6)),np.random.randint(1,10,size=6))
三、Figure组成
matplotlib画出的图由不同成分组成,了解图像的构成对于我们掌握画图技能有很大的帮助。
-
Figure
:顶层级,用来容纳所有绘图元素 -
Axes
:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成 -
Axis
:axes的下属层级,用于处理所有和坐标轴、网格有关的元素 -
Tick
:axis的下属层级,用来处理所有和刻度有关的元素
四、两种绘图接口(方式)
如前文所述,matplotlib可以通过axe进行画图,也可以依赖pyplot自动画图。
-
显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)
-
依赖pyplot自动创建figure和axes,并绘图
五、通用绘图模板
# 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()
通过更改上述模板的x和y,可以实现大多数简单图的绘制。
该模板是通过OO模式进行绘图的,下面给出依赖pyplot画图的模板。
# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式,这一模块的扩展参考第五章进一步学习,这一步不是必须的,样式也可以在绘制图像是进行设置
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 绘制图像, 这一模块的扩展参考第二章进一步学习
plt.plot(x, y, label='linear')
# step4 添加标签,文字和图例,这一模块的扩展参考第四章进一步学习
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
该模式未定义画图布局,直接利用pyplot画图。在进行画图和设置标签时大多数直接将ax改为plt即可。值得注意的是,set_xlabel、set_ylabel、set_title需要去掉前面的“set_”。
上述两个模板的画图结果均为: