Python之matplotlib学习
简介
Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
matplotlib是Python最常用的绘图库,提供了一整套十分适合交互式绘图的命令,是非常强大的Python画图工具。
matplotlib可以画线图、散点图、等高线、图条形图、柱形图、3D图形、图形动画。
绘图基础知识
使用
matplotlib
绘图的原理,主要就是理解figure
(画布)、axes
(坐标系)、axis
(坐标轴)三者之间的关系。
matplotlib
中,就是需要指定axes
(坐标系),每一个axes
(坐标系)相当于一张画布上的一块区域。一张画布上,可以分配不同区域,也就是说,一张画布,可以指定多个axes
(坐标系)。
特别注意:在
matplotlib
中,figure
画布和axes
坐标轴并不能显示的看见,我们能够看到的就是一个axis
坐标轴的各种图形。
- 画板figure,画纸Sublpot画质,可多图绘画
- 画纸上最上方是标题title,用来给图形起名字
- 坐标轴Axis,横轴叫x坐标轴label,纵轴叫y坐标轴ylabel
- 图例Legend 代表图形里的内容
- 网格Grid,图形中的虚线,True显示网格
- 点 Markers:表示点的形状。
创建figure(画布)的方式
1.隐式
想要使用matplotlib绘图,必须要先创建一个figure(画布)对象,然后还要有axes(坐标系)。
当第一次执行画图代码时,系统会判断是否已经有了figure对象,如果没有,系统会自动创建一个figure对象,并且在这个figure至上,自动创建一个axes坐标系(注意:默认只创建一个figure对象,一个axes坐标系)。也就是说,如果我们不设置figure对象,那么一个figure对象上,只能有一个axes坐标系,即我们只能绘制一个图形。
**优势:**如果只是绘制一个小图形,那么直接使用plt.xxx()的方式,会自动帮我们创建一个figure对象和一个axes坐标系,这个图形最终就是绘制在这个axes坐标系之上的。
劣势:如果我们想要在一个figure对象上,绘制多个图形,那么我们就必须拿到每个个axes对象,然后调用每个位置上的axes对象,就可以在每个对应位置的坐标系上,进行绘图,如下图所示。注意:如果figure对象是被默认创建的,那么我们根本拿不到axes对象。因此,需要我们显示创建figure对象。
2.显式
|
|
实例:
|
|
subplot子图创建方法
方法1:先创建一个大图表 然后建立子图填充图表
|
|
方法2:创建一个新的figure,并返回一个subplot对象的numpy数组 plt.subplot
|
|
方法3:多系列图,分别绘制
|
|
Matplotlib Pyplot
Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。
Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。
导入模块:
|
|
可以调用pyplot模块的.plot方法绘制一些坐标,这个plot方法需要许多参数,但前两个是 “x” 和 “y” 坐标,放入列表。
plt.plot在后台[绘制]这个绘图,当绘制了我们想要的一切之后,需要把它带到屏幕上时,运用plt.show方法。
例子:通过两个坐标 (0,0) 到 (6,100) 来绘制一条线
|
|
plot() 用于画图它可以绘制点和线,语法格式如下:
|
|
如果我们只想绘制两个坐标点,而不是一条线,可以使用 o 参数,表示一个实心圈的标记:
|
|
我们也可以绘制任意数量的点,只需确保两个轴上的点数相同即可。如:绘制一条不规则线,坐标为 (1, 3) 、 (2, 8) 、(6, 1) 、(8, 10),对应的两个数组为:[1, 2, 6, 8] 与 [3, 8, 1, 10]。
|
|
完整的绘图步骤
1.导库
|
|
2.创建figure画布对象
|
|
3.根据figure
对象进行布局设置
4.获取对应位置子图的axes
坐标系对象
|
|
5.调用axes对象,进行对应位置的图形绘制
|
|
6.显示图形
plt.show()
或figure.show()
,如果在PyCharm中绘图的话,必须要加这句代码,才能显示。如果在notebook中进行绘图,可以不用加这句代码,而是自动显示。
绘制常见图形
常用统计图对比: 1、折线图:以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
2、直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据,展示一组或者多组数据的分布情况。(统计)
3、条形图:排列在工作表的列或行中的数据可以绘制到条形图中
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
4、散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点。(分布规律)
折线图
基本图形:
|
|
设置图片大小:
|
|
保存图片:
|
|
调整x或y轴上刻度:
|
|
设置中文显示:
|
|
plot方法使用:
|
|
为每条线添加图例:
|
|
添加图形描述:
|
|
绘制网格
|
|
趋势图:
|
|
散点图
使用scatter绘制散点图
|
|
|
|
设置散点图标大小:
|
|
3D散点图
|
|
条形图
使用bar绘制竖着的条形图
|
|
使用barh绘制横着的条形图
|
|
如:
|
|
|
|
bar
|
|
自定义各个柱形的颜色:
|
|
设置柱形图宽度,bar() 方法使用 width 设置,barh() 方法使用 height 设置 height
直方图
使用hist绘制直方图
|
|
如:
|
|
饼图
|
|
3D饼图突出展示
|
|
面积图
|
|
箱型图
|
|
常用函数
绘制图表组成元素的主要函数
plot()——展现量的变化趋势
|
|
scatter()——寻找变量之间的关系
|
|
xlim()——设置x轴的数值显示范围
|
|
xlabel()——设置x轴的标签文本
|
|
grid()——绘制刻度线的网格线
|
|
axhline()——绘制平行于x轴的水平参考线
|
|
axvspan()——绘制垂直于x轴的参考区域
|
|
annotate()——添加图形内容细节的指向型注释文本
|
|
text()——添加图形内容细节的无指向型注释文本
|
|
title()——添加图形内容的标题
|
|
legend()——表示不同图形的文本标签图例
|
|
常用配置参数
点标记类型
marker
,只能用以下简写符号表示
marker 可以定义的符号如下:
标记 | 符号 | 描述 |
---|---|---|
“.” | 点 | |
“,” | 像素点 | |
“o” | 实心圆 | |
“v” | 下三角 | |
“^” | 上三角 | |
“<” | 左三角 | |
“>” | 右三角 | |
“1” | 下三叉 | |
“2” | 上三叉 | |
“3” | 左三叉 | |
“4” | 右三叉 | |
“8” | 八角形 | |
“s” | 正方形 | |
“p” | 五边形 | |
“P” | 加号(填充) | |
“*” | 星号 | |
“h” | 六边形 1 | |
“H” | 六边形 2 | |
“+” | 加号 | |
“x” | 乘号 x | |
“X” | 乘号 x (填充) | |
“D” | 菱形 | |
“d” | 瘦菱形 | |
“|” | 竖线 | |
“_” | 横线 | |
0 (TICKLEFT) | 左横线 | |
1 (TICKRIGHT) | 右横线 | |
2 (TICKUP) | 上竖线 | |
3 (TICKDOWN) | 下竖线 | |
4 (CARETLEFT) | 左箭头 | |
5 (CARETRIGHT) | 右箭头 | |
6 (CARETUP) | 上箭头 | |
7 (CARETDOWN) | 下箭头 | |
8 (CARETLEFTBASE) | 左箭头 (中间点为基准) | |
9 (CARETRIGHTBASE) | 右箭头 (中间点为基准) | |
10 (CARETUPBASE) | 上箭头 (中间点为基准) | |
11 (CARETDOWNBASE) | 下箭头 (中间点为基准) | |
“None”, " " or "" | 没有任何标记 | |
‘$…$’ | 渲染指定的字符。例如 “$f$” 以字母 f 为标记。 |
|
|
我们也可以自定义标记的大小与颜色,使用的参数分别是:
- markersize,简写为 ms:定义标记的大小。
- markerfacecolor,简写为 mfc:定义标记内部的颜色。
- markeredgecolor,简写为 mec:定义标记边框的颜色。
|
|
fmt 参数
fmt 参数定义了基本格式,如标记、线条样式和颜色。
|
|
例如 o:r,o 表示实心圆标记,: 表示虚线,r 表示颜色为红色。
|
|
线类型:linestyle
线类型标记 | 描述 |
---|---|
‘-’ | 实线 |
‘:’ | 虚线 |
‘–’ | 破折线 |
‘-.’ | 点划线 |
颜色类型:
颜色标记 | 描述 |
---|---|
‘r’ | 红色 |
‘g’ | 绿色 |
‘b’ | 蓝色 |
‘c’ | 青色 |
’m' | 品红 |
‘y’ | 黄色 |
‘k’ | 黑色 |
‘w’ | 白色 |
也可以对关键字参数color赋十六进制的RGB字符串如 color=’#900302’
绘图线
线宽
线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数,如:1、2.0、5.67 等。
|
|
线类型
线类型:linestyle
|
|
线的颜色
线的颜色可以使用 color 参数来定义,简写为 c。
|
|
多条线
|
|
多图
subplot()
subplot() 方法在绘图时需要指定位置
|
|
subplots()
subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可
|
|
后记
一堂学下来,感觉很多东西乱糟糟的。个人感觉还是记住最基本的流程和最常用的,把常用的多动手练习,至于剩下的用到的时候再查。