![925e1bb6f03c339ccb5f22b89e8d8f40.png](https://i-blog.csdnimg.cn/blog_migrate/db56665387843a1b9b7fb2d1aa520a0e.jpeg)
Matplotlib介绍
matplotlib 是一个Python 的2D绘图库,提供了一套表示和操作图以及图内部对象的函数,借助它可以绘制多种多样的数据图,如线形图、饼状图等。
Matplotlib中提供了两种绘图接口:
- 基于MATLAB:自动创建和管理图和坐标系,用 pyplot 中函数作图;
- 基于面向对象:显示创建图和坐标系,再调用对象的方法来作图。
本文介绍的绘图都是基于MATLAB的绘图接口。
Pyplot 是一个有命令风格的函数集合,和MATLAB很相似,通过调用函数不断完善绘图,最开始时图中什么都没有,需要什么就调用对应函数进行添加。pyplot 子库中的figure()用来创建图,subplot()用来创建子图。所有的操作都是在子图上进行,pyplot 表示当前子图,若没有就创建一个子图,实际应用中经常直接用pyplot调用相关函数。
Python标准库中默认不包含 matplotlib,需要自己下载安装:
- 命令行安装 pip install matplotlib (安装过程中会涉及到相关依赖包的安装,稍微有点慢)
- 借助于第三方软件,例如通过Anaconda进行软件的安装和包管理。
Matplotlib中的对象又称为Artist,大致可分为两类:
- 容器类:图、坐标系、坐标轴、刻度;(图中可包含若干个坐标系,坐标系中又包含多个坐标轴,坐标轴上包含多个刻度)
- 基础类:线、点、文本、图例、网格、标题等
Matplotlib中图的构成如图所示,(该图来源于官网),主要包括:图(figure)、坐标系(axes)、坐标轴(axis)、主刻度( Major tick )、分刻度( Minor tick )、主刻度标签( Major tick label )、分刻度标签( Minor tick label )、 Y 轴标签( Y axis label )、X 轴标签(X axis label )、线(line)、点(marker)、图例(legend)、网格(grid)、标题(title)等。
![6aca624ce271b23779cf3b6080971287.png](https://i-blog.csdnimg.cn/blog_migrate/3cb14b08e7a6321ba6c7e9af632839d2.jpeg)
注意:并不是所有图中都包含这些内容,图中默认什么都没有,需要什么调用相应的方法即可将其添加进去。Pyplot中常见的方法如下:
![632feab6d224bb94079c00a9418e4e39.png](https://i-blog.csdnimg.cn/blog_migrate/8c7adfd09b42e012b0e7a1b9fb4f95ae.jpeg)
pyplot.figure()
![029441d05bfb7b8fdf4f39c713d74e23.png](https://i-blog.csdnimg.cn/blog_migrate/e9667123f2c31e1e27048e9d70e06933.png)
- num:整数或字符串,可选的,如果没有传值,则采用自增值,可通过number属性访问;如果传递整数,则会检查是否存在对应的图,存在则直接返回,否则创建新的图;如果传的是字符串,则设置为窗口的标题;
- figsize:浮点型元组,可选。图的宽、高值,单位为英寸,默认为[6.4, 4.8];
- dpi:整数,可选。分辨率 ,默认为100;
- facecolor:背景颜色,默认为白色;
- edgecolor:边框颜色,默认为白色,默认看不出效果,需要将linewidth设置为一个比较大的值才能观察到;
- frameon:是否绘制边框和背景,默认为True;
- FigureClass: 图对应的类;
- clear: 是否清空画布,默认为False,设置为True,且图已存在时,会清空已有内容;
- kwargs:其他关键字参数,例如线条宽度。
可以同时创建和显示多个图(figure)。
pyplot.subplot()
如果想在同一个图中绘制多个坐标系,可调用多次调用subplot()方法,每次在当前图中添加一个子块,返回一个坐标系对象。方法定义如下:
![28389d34a18457cf99134291e1406ccc.png](https://i-blog.csdnimg.cn/blog_migrate/986f08b564a08ee4681834f0205550b5.png)
- args:可变参数,可传递3个整数,如①所示,分别表示行数、列数以及当前的位置;也可传递一个3位整数,如②所示,第1位表示行数、第2位表示列数、第3位表示当前位置,此时要求所有数字都小于10。此时将当前图划分为 nrows * ncols 网格,子块的位置左上角为1,从左到右,从上到下不断增大。如果多次调用subplot() 时,会在对应位置添加新内容,如果已有内容则覆盖。每次画图前需要指定位置,默认会执行subplot(1,1,1)。
- kwargs:其他关键字参数,例如可以通过projection指定坐标系类型、通过polar指定是否为极坐标、通过sharex或sharey指定共享x轴或y轴坐标等。例如下面代码将整个图划分为2行2列4个区域。
![5521e01824a6b4de73902e9476c53f42.png](https://i-blog.csdnimg.cn/blog_migrate/a0cd017430e02919bc835b5187919c43.png)
![facf4882cc6dc40fd824926ce2e0fb5e.png](https://i-blog.csdnimg.cn/blog_migrate/3ff75511ac1ab120842c0052a6b0b7cc.jpeg)
更多详细内容可查看视频讲解,手把手教你学Python(入门基础)课程完整视频腾讯课堂链接:https://ke.qq.com/course/1581404?tuin=4c5cc1bc
![dc3bf8a925143eb1d5d71b7baf2227ec.png](https://i-blog.csdnimg.cn/blog_migrate/344df602b3436375bf8d385aa032ee2c.jpeg)
更多Python学习资料请加入群、联系助理老师或关注微信公众号获取,我们会不定期更新!
![e135b421e2143eb5b9f0fb07739688bd.png](https://i-blog.csdnimg.cn/blog_migrate/bf042e0d6becc6b33b3632d39b50f4ab.jpeg)