1.认识Matplotlib
Matplotlib是一个Python 2D绘图库,可以制作各类静态、动态、交互式的图表,是一款非常有力的数据可视化工具。
Matplotlib可用于Python脚本,Python和IPython Shell、Jupyter notebook,Web应用程序服务器和各种图形用户界面工具包等。
2.Figure的组成
Matplotlib从上而下包括 Figure、Axes、Axis、Tick四个层级,分别代表画布、图表、坐标、刻度。
-
Figure
:顶层级,用来容纳所有绘图元素 -
Axes
:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成 -
Axis
:axes的下属层级,用于处理所有和坐标轴,网格有关的元素 -
Tick
:axis的下属层级,用来处理所有和刻度有关的元素
3.两种绘图接口
-
显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)
-
依赖pyplot自动创建figure和axes,并绘图
x = np.linspace(0, 2, 100) fig, ax = plt.subplots() ax.plot(x, x, label='linear') ax.plot(x, x**2, label='quadratic') ax.plot(x, x**3, label='cubic') ax.set_xlabel('x label') ax.set_ylabel('y label') ax.set_title("Simple Plot") ax.legend()
主要区别就在于有无:fig, ax = plt.subplots() ,即是否显式创建figure和axes
不过一般来说不分子图使用pyplot,较为方便;当需要绘制较为复杂精巧的图像时用OO模式,采用多个子图使用oo不容易混杂。
pyplot是面向过程的方法,OO是面向对象的方法。
4.通用绘图模板
# 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()