在科研数据分析中,折线图是一种常见且有效的可视化工具,用于展示数据随时间或其他连续变量的变化趋势。Python,作为一种强大的编程语言,提供了多种绘制折线图的工具和库,其中最常用的包括 Matplotlib 和 Seaborn。
Matplotlib 是 Python 的一个绘图库,广泛应用于科研数据的可视化。它允许用户创建高质量的折线图,并提供了灵活的绘图功能。使用 Matplotlib,科研人员可以轻松地设置图表的标题、坐标轴标签、图例、网格等,以便更好地展示数据。Matplotlib 的主要功能包括:
- 绘制基本折线图及其变体
- 添加误差条、填充区域等辅助元素
- 自定义图表的外观和样式
- 保存图表为多种格式的文件
在科研中,折线图的应用广泛,如展示实验结果随时间的变化、比较不同算法在同一数据集上的性能等。使用 Python 绘制折线图不仅能提高数据展示的清晰度,还能帮助科研人员更好地分析和解读数据结果,下面我们主要讲述用Matplotlib绘制折线图的一些案例和优化效果。
目录
一、Matplotlib绘制基本折线图
二、Matplotlib绘制带误差范围折线图
三、总结对比
一、Matplotlib绘制基本折线图
import matplotlib.pyplot as plt # 导入 Matplotlib 库中的 pyplot 模块,用于绘制图表
# 数据
cola_train_data = ['1%', '5%', '10%', '20%'] # 训练集大小的标签(单位为百分比)
roberta_mcc = [45.8, 53.4, 54.9, 58.1] # RoBERTa 模型对应的 MCC 值
coai_mcc = [48.4, 55.2, 56.9, 59.7] # RoBERTa+CoAi 模型对应的 MCC 值
# 创建折线图
plt.figure(figsize=(5, 5)) # 创建一个新的图表,设置图表大小为 5x5 英寸
plt.plot(cola_train_data, roberta_mcc, marker='o', linestyle='-', color='b', label='RoBERTa')
# 绘制第一条折线,表示 RoBERTa 模型的 MCC 值
# marker='o' 指定数据点的标记为圆形,linestyle='-' 设定折线为实线,color='b' 设定折线颜色为蓝色,label='RoBERTa' 指定图例标签为 RoBERTa
plt.plot(cola_train_data, coai_mcc, marker='s', linestyle='-', color='g', label='RoBERTa+CoAi')
# 绘制第二条折线,表示 RoBERTa+CoAi 模型的 MCC 值
# marker='s' 指定数据点的标记为方形,linestyle='-' 设定折线为实线,color='g' 设定折线颜色为绿色,label='RoBERTa+CoAi' 指定图例标签为 RoBERTa+CoAi
# 添加标题和标签
# plt.title(' ') # 可以取消注释并设置标题
plt.xlabel('Training Set Size (%) on COLA Dataset') # 设置 x 轴标签
plt.ylabel('MCC') # 设置 y 轴标签
plt.ylim(40, 70) # 设置 y 轴的显示范围,从 40 到 70
# 显示图例
plt.legend() # 显示图例,用于区分不同的折线
# 显示网格
plt.grid(True) # 显示网格线,便于阅读图表数据
# 显示图表
plt.show() # 展示图表
这段代码使用 Matplotlib 绘制了一个包含两条折线的折线图,用于比较两种模型在不同训练集大小下的 MCC 值。每条折线都有不同的标记和颜色,以便于区分,并且图表上包含了坐标轴标签、图例和网格线。
效果图:
二、Matplotlib绘制带误差范围折线图
import matplotlib.pyplot as plt # 导入 Matplotlib 库中的 pyplot 模块,用于绘制图表
import numpy as np # 导入 NumPy 库,用于处理数组和数学计算
# 数据
cola_train_data = np.array([1, 5, 10, 20]) # 训练集大小的数组(单位为百分比),使用 NumPy 数组格式
roberta_mcc = [45.8, 53.4, 54.9, 58.1] # RoBERTa 模型对应的 MCC 值
coai_mcc = [48.4, 55.2, 56.9, 59.7] # RoBERTa+WACL 模型对应的 MCC 值
# 假设误差范围
roberta_err = [0.5, 0.5, 0.5, 0.5] # RoBERTa 模型的误差范围(假设值)
coai_err = [0.5, 0.5, 0.5, 0.5] # RoBERTa+WACL 模型的误差范围(假设值)
# 创建折线图
plt.figure(figsize=(5, 5)) # 创建一个新的图表,设置图表大小为 5x5 英寸
plt.plot(cola_train_data, roberta_mcc, marker='o', linestyle='-', color='b', label='RoBERTa')
# 绘制 RoBERTa 模型的折线图
# marker='o' 指定数据点的标记为圆形,linestyle='-' 设定折线为实线,color='b' 设定折线颜色为蓝色,label='RoBERTa' 指定图例标签为 RoBERTa
plt.fill_between(cola_train_data,
np.array(roberta_mcc) - np.array(roberta_err),
np.array(roberta_mcc) + np.array(roberta_err),
color='b', alpha=0.2)
# 填充 RoBERTa 模型的误差范围
# np.array(roberta_mcc) - np.array(roberta_err) 计算误差下限,np.array(roberta_mcc) + np.array(roberta_err) 计算误差上限
# color='b' 设置填充颜色为蓝色,alpha=0.2 设置填充透明度
plt.plot(cola_train_data, coai_mcc, marker='s', linestyle='-', color='g', label='RoBERTa+WACL')
# 绘制 RoBERTa+WACL 模型的折线图
# marker='s' 指定数据点的标记为方形,linestyle='-' 设定折线为实线,color='g' 设定折线颜色为绿色,label='RoBERTa+WACL' 指定图例标签为 RoBERTa+WACL
plt.fill_between(cola_train_data,
np.array(coai_mcc) - np.array(coai_err),
np.array(coai_mcc) + np.array(coai_err),
color='g', alpha=0.2)
# 填充 RoBERTa+WACL 模型的误差范围
# np.array(coai_mcc) - np.array(coai_err) 计算误差下限,np.array(coai_mcc) + np.array(coai_err) 计算误差上限
# color='g' 设置填充颜色为绿色,alpha=0.2 设置填充透明度
# 添加标题和标签
plt.xlabel('Training Set Size (%) on COLA Dataset') # 设置 x 轴标签
plt.ylabel('MCC') # 设置 y 轴标签
plt.ylim(45, 65) # 设置 y 轴的显示范围,从 45 到 65
# 显示图例
plt.legend(loc='upper left') # 显示图例,位置设置在左上角
# 显示网格
plt.grid(True) # 显示网格线,便于阅读图表数据
# 保存图表
plt.savefig('./photo/COLA_WACL', dpi=300) # 将图表保存为文件,分辨率为 300 dpi
# 显示图表
plt.show() # 展示图表
这段代码使用 Matplotlib 和 NumPy 绘制了一个折线图,展示了 RoBERTa 和 RoBERTa+WACL 模型在不同训练集大小下的 MCC 值,并通过误差范围填充来表示不确定性。代码还设置了图表的标签、范围、图例和网格线,并将图表保存为文件。
效果图:
在这段代码中,plt.legend(loc='upper left')
将图例的位置设置为左上角。你可以根据需要调整 loc
参数的值来改变图例的位置,例如 'upper right'
、'lower left'
等。
三、总结对比
- 基本折线图 适用于数据量较小且无需显示误差的简单对比。
- 带误差范围的折线图 提供了额外的信息,能够更好地反映数据的不确定性,适合需要详细数据展示和分析的场景。