Python:Matplotlib数据可视化

发布于:2023-01-14 ⋅ 阅读:(831) ⋅ 点赞:(0)

一.基础语法与常用参数

1.1基础语法与绘图风格

在Matplotlib库中,pyplot模块基本绘图流程主要分为3个部分,如图所示。
在这里插入图片描述

1.1.1创建画布与创建子图

构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,以便于在同一幅图上绘制多个图形。
当只需要绘制一幅简单图形时,创建子图这部分内容可以省略。
在pyplot模块中创建画布,创建并选中子图的函数如表所示。
在这里插入图片描述

1.1.2添加画布内容

添加画布内容是绘图的主体部分。其中添加标题、坐标轴名称、绘制图形等步骤是并列的,没有先后顺序。
可以先绘制图形,也可以先添加各类标签。
图例只有在绘制图形之后才可进行添加。
在pyplot模块中添加各类标签和图例的函数如表所示。
在这里插入图片描述

1.1.3保存与展示图形

在这里插入图片描述

# pyplot基础绘图语法
import numpy as np
import matplotlib.pyplot as plt
get_ipython().run_line_magic('matplotlib', 'inline')
data = np.arange(0, 1.1, 0.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)  # 添加y=x曲线
plt.plot(data, data ** 2)  # 添加y=x^2曲线
plt.legend(['y=x', 'y=x^2'])
plt.savefig('../tmp/不包含子图.png')
plt.show()

在这里插入图片描述

# 绘制子图图形
rad = np.arange(0, np.pi * 2, 0.01)
# 第一幅子图
p1 = plt.figure(figsize=(8, 10), dpi=80)  # 确定画布大小
ax1 = p1.add_subplot(2, 1, 1)  # 创建一个两行1列的子图,并开始绘制第一幅
plt.title('lines')  # 添加标题
plt.xlabel('x1')  # 添加x轴的名称
plt.ylabel('y1')  # 添加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)  # 添加y=x^2曲线
plt.plot(rad, rad ** 2)  # 添加y=x^4曲线
plt.legend(['y=x', 'y=x^2'])
# 第二幅子图
ax2 = p1.add_subplot(2, 1, 2)  # 创开始绘制第2幅
plt.title('sin/cos')  # 添加标题
plt.xlabel('x2')  # 添加x轴的名称
plt.ylabel('y2')  # 添加y轴的名称
plt.xlim((0, np.pi * 2))  # 确定x轴范围
plt.ylim((-1, 1))  # 确定y轴范围
plt.xticks([0, np.pi / 2, np.pi, np.pi * 1.5, np.pi * 2])  # 规定x轴刻度
plt.yticks([-1, -0.5, 0, 0.5, 1])  # 确定y轴刻度
plt.plot(rad, np.sin(rad))  # 添加sin曲线
plt.plot(rad, np.cos(rad))  # 添加cos曲线
plt.legend(['sin', 'cos'])
plt.savefig('../tmp/包含子图.png')
plt.show()

在这里插入图片描述
在这里插入图片描述

1.1.4绘图风格

在Matplotlib库中,pyplot模块的一个子模块style里面定义了很多预设风格,以便于进行风格转换。
每一个预设的风格style都储存在一个以.mplstyle为后缀的style文件。可以在stylelib文件夹中查看。
通过print(plt.style.available)命令可以查看所有预设风格的名称,使用use函数即可直接设置预设风格。
也可以新建mplstyle文件用于自定义绘图风格。
在stylelib文件夹下创建好文件并按照规范配置属性,同样能够使用use函数调用该风格,即可使用自定义的风格。

x = np.linspace(0, 1, 1000)
plt.title('y=x & y=x^2')  # 添加标题
plt.style.use('bmh')  # 使用bmh风格
plt.plot(x, x)
plt.plot(x, x ** 2)
plt.legend(['y=x', 'y=x^2'])  # 添加图例
plt.savefig('../tmp/bmh风格.png')  # 保存图片
plt.show()

在这里插入图片描述

2.1动态rc参数

2.1.1 线条常用的rc参数

pyplot模块使用rc配置文件自定义图形的各种默认属性,称之为rc配置或rc参数。
通过修改rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标与网络属性、文本、字体等。
在Matplotlib库载入时会调用rc_params函数,并将得到的配置字典保存到rcParams变量中。
可通过修改字典的方式或用matplotlib.rc()函数修改rc参数。
修改默认rc参数后,图形对应属性将会发生改变。
在这里插入图片描述

# 调节线条的RC参数
# 原图
x = np.linspace(0, 4 * np.pi)  # 生成x轴数据
y = np.sin(x)  # 生成y轴数据
plt.plot(x, y, label='$sin(x)$')  # 绘制sin曲线图
plt.title('sin')
plt.savefig('../tmp/线条rc参数原图.png')
plt.show()

在这里插入图片描述

# 修改rc参数后的图
plt.rcParams['lines.linestyle'] = '--'
plt.rcParams['lines.linewidth'] = 4
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin')
plt.savefig('../tmp/线条rc参数修改后.png')
plt.show()

在这里插入图片描述

2.1.2坐标轴常用的rc参数

在这里插入图片描述
坐标轴常用rc参数名称及其说明如表所示
在这里插入图片描述

# 修改坐标常用的RC参数
# 原图
x = np.linspace(0, 4 * np.pi)  # 生成x轴数据
y = np.sin(x)  # 生成y轴数据
plt.plot(x, y, label='$sin(x)$')  # 绘制sin曲线图
plt.title('sin')
plt.savefig('../tmp/线条rc参数原图.png')
plt.show()

在这里插入图片描述

# 修改rc参数后的图
plt.rcParams['axes.edgecolor'] = 'r'  # 轴颜色设置为蓝色
plt.rcParams['axes.grid'] = True  # 添加网格
plt.rcParams['axes.spines.top'] = False  # 去除顶部轴
plt.rcParams['axes.spines.right'] = False  # 去除右侧轴
plt.rcParams['axes.xmargin'] = 0.1  # x轴余留为区间长度的0.1倍
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin')
plt.savefig('../tmp/坐标轴rc参数修改后.png')
plt.show()

在这里插入图片描述

2.1.3字体常用的rc参数

在这里插入图片描述

# 调节字体RC常用的参数
# 原图
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 4 * np.pi)  # 生成x轴数据
y = np.sin(x)  # 生成y轴数据
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin曲线')
plt.savefig('../tmp/文字rc参数原图.png')
plt.show()

在这里插入图片描述

# 修改rc参数后的图
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为SimHei
plt.rcParams['axes.unicode_minus'] = False  # 解决负号“-”显示异常
plt.plot(x, y, label='$sin(x)$')  # 绘制三角函数
plt.title('sin曲线')
plt.savefig('../tmp/文字rc参数修改后.png')
plt.show()

在这里插入图片描述