R语言绘图丨论文中最常用箱线图绘制教程,自动进行显著性检验和误差线标注

多组比较式箱线图

在科研论文绘图中,对于多组数据进行比较一般采用箱线图的方法,今天分享一下这个经典数据可视化方法,从零开始绘制一张带误差棒并自动计算显著性比较结果的箱线图

前言:箱线图有什么优势?

  • 数据分布信息:

箱线图能够直观地展示数据的分布情况,包括数据的中位数、上下四分位数和离群值。

  • 离群值检测:

箱线图可以帮助识别离群值,即与其他观测值明显不同的极端值,论文中使用箱线图可以帮助研究人员和读者快速识别和评估离群值的影响。

  • 比较分组数据:

箱线图可以同时显示多个组或条件的数据分布情况,使得不同组之间的比较更加直观,进而进行统计推断和假设检验。

  • 可视化简洁性:

箱线图以简洁直观的方式呈现数据分布,不需要过多的图形元素和细节。

箱线图的绘制方法

载入R包与数据

library(tidyverse)
library(ggsignif)
library(ggsci)
library(ggpubr)
# 使用随机测试数据
df <- data.frame(
    group = rep(c("A", "B", "C","D","E"), each = 20),
    value = c(rnorm(20, mean = 5, sd = 2),
              rnorm(20, mean = 7, sd = 1.5),
              rnorm(20, mean = 8, sd = 2),
              rnorm(20, mean = 4, sd = 1),
              rnorm(20, mean = 4.7, sd = 1.2)))
#使用自己的数据
df <- read.table("data.txt",header = T)

绘图所用数据很简单,分成两列,第一列是分组信息,第二列是具体的数值,如下所示:

> head(df)
  group    value
1     A 7.442960
2     A 3.582090
3     A 5.422412
4     A 3.891454
5     A 6.129032
6     A 3.011515

ggplot2绘图

使用以下代码即可绘制出一张箱线图,附带显著性标注和误差棒,直接可以放在论文中进行使用。

ggplot(df,aes(group,value))+
    stat_summary(fun.data = mean_sdl, 
                 fun.args = list(mult = 1), 
                 geom = "errorbar", 
                 width = 0.1,
                 size=0.8,
                 alpha=0.7)+
    geom_boxplot(aes(fill=group),coef = 1000000)+
    geom_signif(
        comparisons = list(
            c("A","B"),
            c("D","E")
        ), 
        map_signif_level = T, 
        test = "t.test", 
        vjust=0.1, 
        tip_length = 0.02 
        )+
    labs(x = "",y = "Value")+
    ylim(0,13)+
    theme_bw()+
    theme(
        legend.position = "none",
        axis.title = element_text(size = 15,face = "bold"),
        axis.text.x = element_text(size = 12,color = "black"),
        axis.title.y = element_text(size = 12,color = "black")
    )
ggsave("test.pdf",width = 10,height = 4)

代码原理解释

ggplot(df, 
       aes(group, value))

创建一个基础的ggplot对象,其中df是数据框,group和value是数据框中的两个变量,用于指定x轴和y轴的数据。

stat_summary(fun.data = mean_sdl, 
             fun.args = list(mult = 1), 
             geom = "errorbar", 
             width = 0.1, 
             size = 0.8, 
             alpha = 0.7)

使用stat_summary函数对数据进行汇总统计,并绘制误差线。mean_sdl是用于计算均值和标准差的函数,fun.args参数用于传递给mean_sdl函数的参数,geom参数指定使用误差线图形,width参数指定误差线的宽度,size参数指定误差线的线条粗细,alpha参数指定误差线的透明度。

geom_boxplot(aes(fill = group), coef = 1000000)

使用geom_boxplot函数绘制箱线图,并根据group变量对箱线图进行分组。fill参数用于指定组别的填充颜色,coef参数用于调整箱线图的宽度。

geom_signif(comparisons = list(c("A", "B"), 
                               c("D", "E")), 
            map_signif_level = T, 
            test = "t.test", 
            vjust = 0.1, 
            tip_length = 0.02)

使用geom_signif函数在图形中添加显著性标记。comparisons参数指定要比较的组别,map_signif_level参数指定是否映射显著性水平,test参数指定使用的统计检验方法,vjust参数指定标记的垂直位置,tip_length参数指定标记的长度。

labs(x = "", y = "Value")

添加x轴和y轴的标签,其中x轴标签为空字符串,y轴标签为"Value"。

ylim(0, 13)

设置y轴的坐标范围为0到13。

theme_bw()+
theme(legend.position = "none", 
      axis.title = element_text(size = 15, face = "bold"), 
      axis.text.x = element_text(size = 12, color = "black"), 
      axis.title.y = element_text(size = 12, color = "black"))

设置图形的主题样式为白色,其中legend.position参数设置图例的位置为"none",axis.title参数设置坐标轴标题的样式,axis.text.x参数设置x轴标签的样式,axis.title.y参数设置y轴标题的样式。

本文由mdnice多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac电脑上,webm格式怎么转换成mp4?

mac电脑上&#xff0c;webm格式怎么转换成mp4&#xff1f;webm格式的视频也是最近几年也越来越多的&#xff0c;小编最近就不止一次的下载到过webm格式的视频&#xff0c;很多小伙伴肯定对它还并不是很了解&#xff0c;webm是由谷歌公司所提出以及开发出来的视频文件格式&#…

python实现语音识别(讯飞开放平台)

文章目录 讯飞平台使用python实现讯飞接口的语音识别第一步&#xff1a;导入需要的依赖库第二步&#xff1a;声明全局变量第三步&#xff1a;初始化讯飞接口对象第四步&#xff1a;收到websocket建立连接后的处理函数第五步&#xff1a;收到websocket消息的处理函数第六步&…

神经网络学习小记录74——Pytorch 设置随机种子Seed来保证训练结果唯一

神经网络学习小记录74——Pytorch 设置随机种子Seed来保证训练结果唯一 学习前言为什么每次训练结果不同什么是随机种子训练中设置随机种子 学习前言 好多同学每次训练结果不同&#xff0c;最大的指标可能会差到3-4%这样&#xff0c;这是因为随机种子没有设定导致的&#xff0…

删除链表的倒数第 N 个结点——力扣19

题目描述 法一&#xff09;计算链表长度 class Solution { public:int getLength(ListNode* head){int len0;while(head){len;head head->next;}return len;}ListNode* removeNthFromEnd(ListNode* head, int n) {int len getLength(head);ListNode* dummy new ListNode …

【Hello mysql】 mysql的约束

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的约束 mysql的约束 表的约束空属性默认值列描述zerofill主键自增长唯一键外键总结 表的约束 为什么要有约束&#xff1f; 我们在收集一些数据的时候会要求该数据必须存在 比如说像是国家在登记公民信息的时候身…

【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记

目录 一、Linux 的安全性1.1 /etc/passwd 文件1.2 /etc/shadow 文件1.3 添加新用户 —— useradd1.4 删除用户 —— userdel1.5 修改用户 —— usermod、passwd、chpasswd 二、使用 Linux 组2.1 /etc/group 文件2.2 创建新组 —— groupadd2.3 修改组 —— groupmod 三、理解文…

Swagger-Bootstrap-UI

Swagger-Bootstrap-UI 是一个为 Swagger 提供美观、易用的界面展示和增强功能的开源项目。它通过自定义样式和交互&#xff0c;提供了更好的文档展示和交互体验&#xff0c;包括美化的界面、接口测试工具、在线调试、文档导出等功能。 更高阶的有Knife4j,Knife4j是一个集Swagg…

免费 Selenium各大浏览器驱动【谷歌chrme、火狐Firefox、IE浏览器】

aardio群 625494397 废话不多说 直接开整&#xff01; 竟然还有脸收费 服了 下载对应版本的浏览器驱动 目标网址 应用场景 Selenium库涉及到 安装selenium库 pip install selenium-i https://mirrors.aliyun.com/pypi/simple/下载对应浏览器驱动 https://registry.npmmirror.c…

水电站运行数据3D可视化展示方便管理运维

水电站是现代能源体系中的重要组成部分&#xff0c;对于保障国家能源安全和经济发展具有重要的意义。然而&#xff0c;由于水电站的建设和管理涉及到大量的技术和专业知识&#xff0c;许多人对水电站的运行和维护存在许多疑惑和困惑。为了解决这些问题&#xff0c;我们引入了全…

TCP 重传机制 滑动窗口 流量控制 拥塞控制 学习总结!

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 这篇博客主要记录 tcp 的基础知识的学习总结相关内容&#xff01;备注&#xff1a;图片均来自作者&#xff1a;小林哥 tcp 的三大特性 tcp 大家都不陌生&#xff0c…

Work20230705

//main.c #include "uart4.h" extern void printf(const char *fmt, ...); void delay_ms(int ms) {int i,j;for(i 0; i < ms;i)for (j 0; j < 1800; j); }int main() {while(1){//将获取到的字符1发送到终端//hal_put_char(hal_get_char()1);hal_put_string…

chatGPT之100个例子-从体验到精通

简介 本博文演示了100个chatGPT在各行各业的使用例子,全部看完有助于培养chatGPT解决问题的思维。 在人工智能时代,智能软件并不会淘汰人类,淘汰人类的是会使用人工智能的人! 我们直接使用openAI官方chatGPT,生动演示了chatGPT的一些妙用! 请仔细看完,一定会有收获! 每…

[期末网页作业]-精仿华为官网10个网页(html+css+js)

经过漫长的期末考试季节&#xff0c;我成功地完成了一个华为官网的仿写项目&#xff0c;并且非常高兴地与大家分享。这个项目包含了10个页面&#xff0c;每一个页面都经过了精心的设计和努力的填充。 首先&#xff0c;我注重了页面的整体布局与设计。借鉴了华为官网的风格&…

apache php mysql python 环境部署与离线安装deb包

文章目录 1.背景介绍2. 主要涉及操作2.1 安装系统&#xff1a;2.2 apache mysql php安装2.3 配置2.4 python相关库安装 3. 操作记录3.1 软件安装3.2 读取文件内容后进行文件内容抽取3.3 执行以上的sh脚本3.4 所学3.5 打包发送 4. 参考文献 1.背景介绍 使用的系统为ubuntu18.04…

vscode安装+配置+使用+调试【保姆级教程】

1. VScode是什么 Visual Studio Code简称VS Code&#xff0c;是一款跨平台的、免费且开源的现代轻量级代码编辑器&#xff0c;支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性&#xff0c;也拥有对git的开箱即…

架构师进阶之路 - 微服务怎么划分

目录 微服务划分目标 业务、技术、团队导向规划服务 领域检查 依赖DAG检查 分布式事务检查 性能分布检查 稳定&#xff08;易变&#xff09;性检查 调用链检查 微服务划分目标 我们常说服务的合理划分是微服务成功的重中之重&#xff0c;一个合理的服务划分应该符合一下…

Linux性能优化实践——CPU上下文

CPU上下文切换 Linux是一个多任务操作系统&#xff0c;它支持远大于CPU数量的任务同时运行。这些任务不是真正意义上的并行运行&#xff0c;而是系统在短时间内&#xff0c;将CPU轮流分配给它们&#xff0c;造成任务同时运行的错觉。 CPU需要知道任务从哪里加载&#xff0c;从…

Linux调优–I/O 调度器

Linux 的 I/O 调度器是一个以块式 I/O 访问存储卷的进程&#xff0c;有时也叫磁盘调度器。Linux I/O 调度器的工作机制是控制块设备的请求队列&#xff1a;确定队列中哪些 I/O 的优先级更高以及何时下发 I/O 到块设备&#xff0c;以此来减少磁盘寻道时间&#xff0c;从而提高系…

QC51XX---I2c使用

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 今天我们聊聊I2C的使用。在开发过程中多多少少会加入一些外围传感器可以给用户带来更好的使用体验。例如,利用接近传感器识别戴上耳机和取下耳机,从而去自动暂停播放音乐,或接听转移通话。又例如,用触摸或敲击替代…

软件安全技术复习内容

软件安全技术 边复习边写的&#xff0c;有错误及时指正第一章 软件安全概述零日漏洞安全威胁分类CIA安全基本属性PDRR模型软件安全的主要方法和技术基本方法主要技术 第二章 软件漏洞概述概念软件漏洞成因分析软件漏洞分类基于漏洞成因的分类基于漏洞利用位置的分类基于威胁类型…