Matplotlib是Python中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是Python常用的 **2D **绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。
Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所做的高级封装。
Matplotlib可用于Python脚本,Python和IPython Shell、Jupyter notebook,Web应用程序服务器和各种图形用户界面工具包等。
为了对matplotlib有更好的理解,让我们从一些最基本的概念开始认识它,再逐渐过渡到一些高级技巧中。
Matplotlib的图像是画在figure(如windows,jupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。最简单的创建figure以及axes的方式是通过pyplot.subplots命令,创建axes以后,可以使用Axes.plot绘制最简单的折线图。
在绘图之前,首先查看自己机器上的Matplotlib版本,建议升级到V3.3.3(2020年12月),否则可能会报错!
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots() #创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) #绘制图像
注: 在jupyter notebook中使用matplotlib时会发现,代码运行后自动打印出类似
1. 在代码块最后加一个分号;
2. 在代码块最后加一句plt.show();
3. 在绘图时将绘图对象显式赋值给一个变量,如将plt.plot([1, 2, 3, 4]) 改成line =plt.plot([1, 2, 3, 4])。
fig, ax = plt.subplots() # 创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]); # 绘制图像
我们还可以通过matplotlib.pyplot方法直接在当前axes上绘
制图像,如果用户未指定axes,matplotlib会帮你自动创建一个。
line =plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
一个完整的matplotlib图像通常会包括以下四个层级,这些层级也被称为容器(container)。
Figure:顶层级,用来容纳所有绘图元素;
Axes:matplotlib的核心,容纳大量的元素来构造一幅幅子图,一个figure可以由一个或多个子图组成;
Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素;
Tick:axis的下属层级,用来处理所有和刻度有关的元素。
matplotlib提供了两种最常用的绘图接口:
1、 显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style);
2、依赖pyplot自动创建figure和axes,并绘图。
使用第一种绘图接口,如下所示:
x = np.linspace(0, 2, 100)
#numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#在指定的间隔内返回均匀间隔的数字。
#返回num均匀分布的样本,在[start, stop]。
#这个区间的端点可以任意的被排除在外。
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()
plt.show()
x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
通过本次学习,我们认识了Matplotlib,并以一个简单的折线图为例开启了绘图之旅,以及Figure的组成、两种绘图接口。
[1].http://c.biancheng.net/matplotlib/
[2].https://matplotlib.org/stable/tutorials/introductory/usage.html
[3].https://blog.csdn.net/you_are_my_dream/article/details/53493752