参考:https://www.cnblogs.com/zyg123/p/10512513.html
在matplotlib库里,总分成两种绘图方法
- 方法一:函数式绘图
- 方法二:面向对象式绘图
函数式绘图
在matplotlib.pyplot里是封装好的函数,用户可以直接调用函数进行绘图。
一般的,我们约定 matplotlib.pyplot 取别名为 plt
其模块下主要定义如下两方面的函数:
- 操作类的函数:对于画布,图,子图,坐标轴,图例,背景,网格等的操作。
如:plt.ylabel(), plt.xlabel(), plot.yscale(), plt.legend(), plt.title(), plt.text()
- 绘图类的函数:画折线图,散点图,条形图,直方图,饼状图等特点图的绘制函数。
如:plt.scatter, plt.plot(), plt.bar, plot.pie(), plt.hise()
具体可以参考官方网站
函数绘图的缺优点
缺点:其实函数式的绘图本质上还是在matplotlib对象的封装,在对象的基础上多了一层函数的调用,其定制性并不是很强,都是封装好的函数。
优点:适合一般用户绘图,要求不是很高,定制性不是很强的绘图。新手容易上手,不需要了解内部的对象问题。
绘图类的函数
matplotlib绘图不止这些,在此只举例了大部分
操作类的函数
例子:
# 导入模块
import matplotlib.pyplot as plt import numpy as np
# 数据
x = np.linspace(0, 2*np.pi, 1000) y = np.sin(x**2)
# 绘图
plt.plot(x, y) # 显示 plt.show()
面向对象式的绘图
面向对象式的绘图,才是matplotlib绘图最自然的方式,不过需要先了解一些基本的概念。
可参考官方介绍:https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py
figure(图形)
axes(子图形)
title(标题)
legend(图例)
Major tick(大标尺刻度)
Minor tick(小标尺刻度)
Major tick label(大标尺刻度数值)
Minor tick label(小标尺刻度数值)
Y axis label(y轴指标说明)
X axis label(x轴指标说明)
Line(线型图)
Markers(数据标注点)
Grid(格子)等等
基本对象
- 整个图形即是一个Figure对象,即一个弹出的绘图的窗口,便是一个figure。
- Figure对象至少包含一个子图,也就是Axes对象。
- Figure对象包含一些特殊的Artist对象,如title标题、图例legend。
- Figure对象包含画布canvas对象。 canvas对象一般不可见,通常无需直接操作该对象,matplotlib程序实际绘图时需要调用该对象。
- 字面上理解,axes是数据轴axis的复数,但它并不是指数据轴,而是子图对象。可以这样理解,每一个子图都有x和y轴,axes则用于代表这两个数据轴所对应的一个子图对象。
- 常用方法set_xlim()以及set_ylim():
- 设置子图x轴和y轴对应的数据范围。
- set_title():设置子图的标题。
- set_xlabel()以及set_ylable():
- 设置子图x轴和y轴指标的描述说明。
- Axis是数据轴对象,主要用于控制数据轴上刻度位置和显示数值。
- Axis有Locator和Formatter两个子对象,分别用于控制刻度位置和显示数值。
- 基本上所有的对象都是一个Artist对象,包括Figure对象、Axes对象和Axis对象,可以将Artist理解为一个基本类。
- 当提交代码,图像最终呈现时,所有的artist对象都会绘制于canvas画布上。
参考:https://baijiahao.baidu.com/s?id=1614559225877861604&wfr=spider&for=pc