Python:Matplotlib数据可视化
一.基础语法与常用参数
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()