科研绘图之折线图

news2024/9/22 23:17:55

在科研数据分析中,折线图是一种常见且有效的可视化工具,用于展示数据随时间或其他连续变量的变化趋势。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' 等。 


三、总结对比

  • 基本折线图 适用于数据量较小且无需显示误差的简单对比。
  • 带误差范围的折线图 提供了额外的信息,能够更好地反映数据的不确定性,适合需要详细数据展示和分析的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2084918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode解决运行程序无法从控制台输入问题

在vscode中运行一些简单的程序代码,需要从控制台接受输入参数,发现不能通过键盘输入。 本章教程,提供该问题的解决方法。 解决办法 由于我是使用的Code Runner这个插件,Code Runner插件支持运行多种编程语言,很方便。打…

如何构建基于Java SpringBoot和Vue的受灾救援物资管理系统?——四步实现物资高效调配,提升救援响应速度

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

国外服务器独立ip的好处

国外服务器提供独立IP服务,这为网站运营者、企业用户以及个体户提供了诸多便利。独立IP即一个独一无二的IP地址,专为一个网站或一项服务,相较于共享IP,独立IP拥有许多不可替代的优势。下面将介绍国外服务器提供独立IP服务的好处&a…

C#生成exe并用process运行

文章目录 前言一、生成exe1.发布自包含版本2.一些问题1. 使用 .NET Framework修改项目文件 二、使用Process调用exe子进程阻塞了父进程:资源锁定:无限循环:命令行挂起:1.解决方法示例代码 说明1.启动 EXE 文件:2.启动 …

开源项目管理工具Taiga

什么是 Taiga ? Taiga 是一个免费开源,而且功能非常强大的项目管理平台,用于初创企业和敏捷开发团队。Taiga 专注于简洁性,并且界面很干净简单。Taiga 也非常个性化,并集合了很多其它功能和外部工具,还有大…

如何恢复最近删除的文件?5种简单方法!

数据丢失在我们的工作生活中经常发生。当你决定清理硬盘或U盘时,你会删除一些文件夹或文件。如果你通过右键单击删除文件,则可以很容易从回收站恢复已删除的文件。但是,如果你按Shift Delete键、清空回收站或删除大于8998MB的大文件夹&#…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(XGBoost分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(XGBoost分类器) 文章目录 一、基本原理鲸鱼智能优化特征选择流程 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序…

丹娜生物增利不增收:核心产品原材料面临不利因素,销售费用率攀升

《港湾商业观察》黄懿 7月15日,丹娜(天津)生物科技股份有限公司(下称“丹娜生物”)针对北交所出具的IPO问询文件进行了首轮回复,其保荐人为招商证券。7月26日,监管部门发出第二封问询函。 公开…

分布式场景下websocket解决方案

在项目中遇到:多个服务作为websocket服务端时,怎么跟前端设备进行数据通信的问题。具体解决方案,分享一下。 1.遇到问题 项目中使用websocket与前端设备建立长链接,用于推送过车、车位数、支付等相关信息,由于项目是负…

监控摄像头内存卡格式化了怎么恢复?

监控摄像头在现代社会中的应用越来越广泛,无论是家庭安防还是商业场所的安全监控,它们都扮演着重要的角色。然而,内存卡的数据丢失问题也时有发生,尤其是当内存卡被不小心格式化时,很多重要的监控数据可能会永久丢失。…

SpringBoot下获取resources目录下文件的常用方法

哈喽,大家好,今天给大家带来SpringBoot获取resources目录下文件的常用方法,示例中的方法是读取resources目录下的txt和xlsx文件,并将xlsx导出到excel的简单写法。完整代码放在最后。 通过this.getClass()方法获取 method1 - met…

linux安装mysql数据库,含公网链接(有网络带网安装)

1.检查是否存在mysql mysql出现这个,代表没安装 -bash: mysql: command not found 2.检查是否有mariadb数据库,如果有,需要先卸载。 rpm -qa | grep mariadb3.卸载现有的数据库 rpm -e --上个命令显示的名字4.在线安装,需要外…

【多线程】线程的等待通知机制-wait与notify

💐个人主页:初晴~ 📚相关专栏:多线程 / javaEE初阶 我们都知道,线程在系统调度上是随机的,因此线程之间执⾏的先后顺序难以预知。但在实际开发中有时我们希望控制多个线程执行某个逻辑的先后顺序&#xff…

基于JSP高校应届生就业信息管理系统的设计与实现(全网第一无二,阿龙原创设计)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

C#骑砍逻辑类Mod制作详细解说

前言: 最近在研究骑砍的mod,主要是想修改其中的逻辑部分,因此有了这篇帖子。 一,文件夹与XML配置 在Modules创建一个新文件夹,文件夹名称随意,不影响实际的读取。 文件夹下面的位置需要固定,因…

大模型学习路线:从新手到专家的全面指南,从零基础到精通,非常详细收藏我这一篇就够了

随着人工智能技术的飞速发展,特别是近年来深度学习领域的突破,大规模预训练模型(通常称为“大模型”)已成为推动自然语言处理(NLP)、计算机视觉(CV)等领域发展的关键力量。本文将为你…

CSS 嵌套元素的隐藏规则

简单介绍一下,在 HTML 和 CSS 中,元素大体分为 块级元素、内联元素(行内元素)、块级内联元素(行内块元素)。它们有着不同的嵌套规则和特殊之处。 1. 行内元素 行内元素特点:不独占一行、不可设…

06- Python的标识符

Python 标识符的知识点 简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。 Python 中标识符的命名不是随意的,而是要遵守一定的命令规则&#xf…

Qt 调用MFC dll,动态库中有界面

一、创建MFC 动态库工程 下一步 创建 点击确定 二、创建接口 这个是系统创建的,改成自己的接口。 头文件: #ifndef __WEB_ENGINE__ #define __WEB_ENGINE__#ifdef __cplusplus extern "C" { #endif__declspec(dllexport) bool __stdcall Loa…

Datawhale AI 夏令营-CV竞赛-Task2

# Datawhale AI 夏令营 夏令营手册:从零上手CV竞赛 比赛:2024“大运河杯”数据开发应用创新大赛——城市治理赛道 代码运行平台:厚德云 赛题任务 本赛题的任务是开发智能识别系统,用于自动检测和分类城市管理中的违规行为。通…