简述
mat参照了函数设计,plot表示绘图的作用,lib则表示一个集合。今年在开源社区的推动下,Matplotlib在科学计算领域得到了广泛的应用,成为Python中应用非常广的绘图工具之一。其中Matplotlib应用最广的是matplotlib.pyplot模块。
matplotlib.pyplot是一个命令风格函数的集合,使得Matplotlib的机制更像MATLAB。每个绘图函数都可对图形进行一些修改,如创建图形,在图形中创建绘图区域,在绘图区域绘制一些线条,使用标签装饰绘图等。在pyplot中,各种状态跨函数调用保存,以便跟踪诸如当前图形和绘图 区域之类的东西,并且绘图函数始终指向当前轴域。本章以pyplot为基础介绍和展开学习。
学习目标
- 掌握pyplot常用的绘图参数的调节方法
- 掌握子图的绘制方法
- 掌握绘制图形的保存与展示方法
- 掌握散点图和折线图的作用与绘制方法
- 掌握直方图、饼图和箱线图的作用与绘制方法
掌握绘图基础语法与基本参数
掌握pyplot基础语法
大部分的pyplot图形绘制都遵循一个流程,使用这个流程可以完成大部分图形的绘制。pyplot基本绘图流程主要分为3个部分。
- 创建画布与创建子图
构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。当只需要绘制一幅简单的图形时,就可以不用分割。
pyplot创建画布与选中子图的常用函数
函数名称 | 函数作用 |
---|---|
plt.figure | 创建一个空白画布,可以指定画布大小、像素 |
figure.add_subplot | 创建并选中子图,可以指定子图的行数、列数和选中图片的编号 |
- 添加画布内容
第二部分是绘图的主体。
包括添加标题、添加坐标名称、绘制图形等步骤是并列的,没有先后。但添加图例一定是在绘制图形之后进行的。
pyplot中添加各类标签和图例的常用函数
函数名称 | 函数作用 |
---|---|
plt.title | 添加标题,指定标题名称、位置、颜色、字体大小等参数 |
plt.xlabel | 添加x轴名称,可以指定位置、颜色、字体大小等颜色 |
plt.ylabel | 添加y轴名称,可以指定位置、颜色、字体大小等颜色 |
plt.xlim | 指定x轴范围,只能确定一个数值区间,无法使用字符串标识 |
plt.ylim | 指定y轴范围,只能确定一个数值区间,无法使用字符串标识 |
plt.xticks | 指定x轴刻度的数目与取值 |
plt.yticks | 指定y轴刻度的数目与取值 |
plt.legend | 指定图例,可以指定图例的大小、位置、标签 |
- 保存与显示图形
第三部分用于保存和显示图形,通常只有两个函数,参数也很少
pyplot中保存额和显示图形的常用函数
函数名称 函数作用 | |
---|---|
plt.savefig | 保存绘制的图形,可以指定图形的分辨率、边缘的颜色等 |
plt.show | 在本机显示图形 |
3-1pyplot中的基础绘图语法
import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline表示在行中显示图片,在命令行运行报错
data=np.arange(0110.01)
plt.title('lines')# 添加标题
plt.xlabel('x')#添加x轴的名称
plt.ylabel('y')#添加y轴的名称
plt.xlim((0,1))#确定x轴范围
plt.ylim((0,1))#确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])#规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])#确定y轴刻度
plt.plot(data,data**2)#添加y=x^2曲线
plt.plot(data,data**4)#添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
plt.savefig(' 3-1.png')
plt.show()
3-2包含子图的基础语法
import numpy as np
import matplotlib.pyplot as plt
rad = np.arange(0, np.pi * 2, 0.01)
# 第一幅子图
p1 = plt.figure(figsize=(8, 6), dpi=80) # 确定画布大小
ax1 = p1.add_subplot(2, 1, 1) # 创建一个2行1列的子图
plt.title('lines') # 添加标题
plt.xlabel('x') # 添加x轴的名称
plt.ylabel('y') # 添加y轴的名称
plt.xlim((0, 1)) # 确定x轴范围
plt.ylim((0, 1)) # 确定y轴范围
plt.xticks([0, 0.2, 0.4, 0.6, 0.8, 1]) # 确定x轴刻度
plt.yticks([0, 0.2, 0.4, 0.6, 0.8, 1]) # 确定y轴刻度
plt.plot(rad, rad ** 2) # 添加曲线
plt.plot(rad, rad ** 4) # 添加曲线
plt.legend(['y=x^2'], ['y=x^4'])
# 第二幅子图
ax2 = p1.add_subplot(2, 1, 2) # 开始绘制第二幅
plt.title('sin/cos')
plt.xlabel('rad')
plt.ylabel('value')
plt.xlim((0, np.pi * 2))
plt.ylim((-1, 1))
plt.xticks([0, np.pi / 2, np.pi, np.pi * 1.5, np.pi * 2])
plt.yticks([-1, -0.5, 0, 0.5, 1])
plt.plot(rad, np.sin(rad))
plt.plot(rad, np.cos(rad))
plt.legend(['sin'], ['cos'])
plt.savefig('sincos.png')
plt.show()
设置pyplot的动态rc参数
pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。
默认rc参数可以在python交互式环境中动态更改。所有存储在字变量中的rc参数被称为rcParams。rc参数在修改过后,绘图时使用默认的参数就会改变。
3-3调节线条的rc参数
import numpy as np
import matplotlib.pyplot as plt
# 原图
x = np.linspace(0, 4 * np.pi)
y = np.sin(x)
plt.plot(x, y, label="$sin(x)$")
plt.title('sin')
plt.savefig('默认sin曲线.png')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
#修改RC参数后的图
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth']=3
plt.plot(x,y,label="$sin(x)$")
plt.title('sin')
plt.savefig('修改rc参数后sin曲线.png')
plt.show()
线条常用的rc参数名称。解释与取值
rc参数名称 | 解释 | 取值 |
---|---|---|
lines.linewidth | 线条宽度 | 取0~10之间的数值,默认为1.5 |
lines.linestyle | 线条样式 | 可取"-“”–“”-.“”:"4种。默认为“-” |
lines.marker | 线条上点的形状 | 可取"o"“D”,“h”,“.”,"S"等20种,默认为None |
lines.markersize | 点的大小 | 取0~10 |
lines.linstyle参数取值及其含义
lines.linestyle取值 | 含义 |
---|---|
‘-’ | 实线 |
‘-.’ | 点线 |
‘–’ | 长虚线 |
‘:’ | 短虚线 |
lines.marker参数取值及其意义
lines.marker取值 | 含义 |
---|---|
o | 圆圈 |
D | 菱形 |
h | 六边形1 |
H | 六边形2 |
- | 水平线 |
8 | 八边形 |
P | 五边形 |
, | 像素 |
+ | 加号 |
None | 无 |
、 | 点 |
s | 正方形 |
* | 星号 |
d | 小菱形 |
v | 一角朝下的三角形 |
< | 一角朝左的三角形 |
> | 一角朝右的三角形 |
^ | 一角朝上的三角形 |
|竖线 | |
x | X |
3-4调节字体的rc参数
import numpy as np
import matplotlib.pyplot as plt
# 无法显示中文标题
x = np.linspace(0, 4 * np.pi)
y = np.sin(x)
plt.plot(x, y, label="$sin(x)$")
plt.title('sin曲线')
plt.savefig('无法显示中文标题sin曲线.png')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体
plt.rcParams['axes.unicode_minus'] = False # 这两行需要手动设置
# 修改rc参数后的图
plt.plot(x, y, label='$sin(x)$')
plt.title('sin')
plt.savefig('修改rc参数后的sin曲线.png')
plt.show()
分析特征间的关系
绘制散点图
散点图,是利用坐标即散点的分布形态反映特征间的统计关系的一种图形。值由点在图表中的位置表示,类别由图中的不同标记表示,通常用于比较跨类别的数据。
散点图可以提供两类关键信息:
- 特征之间是否存在数值或者数量的关联趋势,关联趋势是线性的还是非线性的
- 如果某个点或者几个点偏离大多数点,这个点就是离群值,通过散点图可以一目了然,从而可以进一步分析这些离群值是否存在建模分析中产生很大的影响。
scatter函数常用参数及说明
3-5绘制2000-2017年个季度过敏生产总值散点图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
data = np.load('35data.npz/国民经济核算季度数据.npz', allow_pickle=True)
name = data['columns']
values = data['values']
plt.figure(figsize=(8, 7))
plt.scatter(values[:, 0], values[:, 2], marker='o')
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0, 225000))
plt.xticks(range(0, 70, 4), values[range(0, 70, 4), 1], rotation=45)
plt.title('绘制2000-2017年个季度过敏生产总值散点图')
plt.savefig('绘制2000-2017年个季度过敏生产总值散点图.png')
plt.show()
3-6绘制2000-2017年各季度国民生产总值散点图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei' # 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体
plt.rcParams['axes.unicode_minus'] = False # 这两行需要手动设置
plt.figure(figsize=(8, 7))
data = np.load('35data.npz/国民经济核算季度数据.npz', allow_pickle=True)
values = data['values']
# 绘制散点图1
plt.scatter(values[:, 0], values[:, 3], marker='o', c='red')
# 绘制散点图2
plt.scatter(values[:, 0], values[:, 4], marker='D', c='blue')
# 绘制散点图3
plt.scatter(values[:, 0], values[:, 5