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

news2024/11/23 13:42:55

多组比较式箱线图

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

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

  • 数据分布信息:

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

  • 离群值检测:

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

  • 比较分组数据:

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

  • 可视化简洁性:

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

箱线图的绘制方法

载入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多平台发布

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

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

相关文章

【AcWing算法基础课】第三章 搜索与图论

文章目录 前言课前温习一、深度优先搜索&#xff08;DFS&#xff09;1、排列数字1.1题目描述1.2思路分析1.3代码实现 2、 n-皇后问题1.4题目描述1.5思路分析1.6代码实现 二、宽度优先搜索&#xff08;BFS&#xff09;1、走迷宫2.1题目描述2.2思路分析2.3代码实现 三、树与图的存…

2023.07.05 ARM day6

实验1 1.在键盘输入一个字符&#xff0c;串口工具进行显示 2.例如&#xff1a;在在键盘输入一个字符a,串口工具进行显示b 实验2 1.在键盘输入一个字符串&#xff0c;串口工具进行显示 2.例如&#xff1a;在在键盘输入一个字符串“huyue”,串口工具进行显示“huyue” inclu…

MySQL数据库管理与开发

什么是MySQL 数据库&#xff1f; M典MQLB公司开发的一个关系型数据库管理系统。通过它司以有效地组织和管理存储在数据库中的数据。MySQL 数据库可以称得上日前运行速度最快的SQL语言数据库。 MySQL 的优势 MySQL数据库是一款自由软件&#xff0c;任何人都可以从MySQL的官方…

保姆级 雅特力AT32 MCU 从SRAM启动KEIL工程配置步骤(STM/GD/APM通用)

好记性不如烂笔头&#xff0c;既然不够聪明&#xff0c;就乖乖的做笔记&#xff0c;温故而知新。 本文档用于本人对知识点的梳理和记录。 一、前言 开发工具&#xff1a;KEIL 开发板&#xff1a;AT32F415 AT-START-F415 软件工程&#xff1a;雅特力BSP flash_wirte_read 点击…

阿里开业项目chat2DB-人工智能SQL分析介绍

1. chat2DB简介 1-1. 简介 ​ chat2DB是一款有开源免费的多数据库客户端工具&#xff0c;支持windows、mac本地安装&#xff0c;也支持服务器端部署&#xff0c;web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力&#xff0c;能够将自然语…

RabbitMQ系列(9)--RabbitMQ预取值及利用预取值实现不公平分发

概念&#xff1a;RabbitMQ的默认分发消息机制是轮询分发&#xff0c;但在消费者之间处理任务速度不同时&#xff0c;这种分发消息机制会导致任务的处理效率低下&#xff0c;处理任务速度快的消费者很大一部分的时间处于空闲状态&#xff0c;速度慢的消费者则一直在干活&#xf…

SpringBoot教学资料6-SpringBoot登录注册功能实现(带简单前端)

项目样式&#xff1a; SQL: CREATE TABLE t_user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(32) NOT NULL,password varchar(32) NOT NULL,PRIMARY KEY (id),UNIQUE KEY username (username) ) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8项目结构&#xf…

数据结构(排序)

文章目录 一、排序的概念二、插入排序1. 基本思想2. 直接插入排序3. 希尔排序(缩小增量排序) 三、选择排序1. 基本思想2. 直接选择排序3. 堆排序 四、交换排序1. 基本思想2. 冒泡排序3. 快速排序 五、归并排序六、其他排序6.1 计数排序6.2 基数排序6.3 桶排序 一、排序的概念 …

记一次 .NET 某医院预约平台 非托管泄露分析

一&#xff1a;背景 1. 讲故事 前几天有位朋友找到我&#xff0c;说他的程序有内存泄露&#xff0c;让我帮忙排查一下&#xff0c;截图如下&#xff1a; 说实话看到 32bit&#xff0c; 1.5G 这些关键词之后&#xff0c;职业敏感告诉我&#xff0c;他这个可能是虚拟地址紧张所…

Docker快速部署Hadoop环境

Docker安装部署Hadoop环境&#xff0c;通过三个容器来模拟三个节点&#xff0c;最后只保留Master节点实现搭建。 安装环境 Ubuntu 22.04.1 LTS 和Docker 23.0.1 安装过程 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/hadoop_test/hadoop_base在Docker中创建网…

供应链管理系统有哪些模块?

先弄搞清楚&#xff1a;供应链管理的概念与定义 供应链管理(Supply Chain Management ,简称SCM)&#xff1a;就是指在满足一定的客户服务水平的条件下&#xff0c;为了使整个供应链系统成本达到最小而把供应商、制造商、仓库、配送中心和渠道商等有效地组织在一起来进行的产品…

Kubernetes(k8s)容器编排Pod调度策略

目录 1 节点调度1.1 创建资源清单1.2 应用部署1.3 删除pod 2 定向调度(标签调度)2.1 创建标签2.1.1 添加标签2.1.2 显示标签 2.3 创建资源清单2.4 应用部署2.5 删除pod 1 节点调度 ​ 一般而言pod的调度都是通过RC、Deployment等控制器自动完成&#xff0c;但是仍可以通过手动配…

自然语言处理的分词与词嵌入

1 分词 1.1 什么是分词 分词是把自然语言语句进行数字化的过程。 1.2 为什么要分词 自然语言是字符串序列&#xff0c;机器没办法直接处理&#xff0c; 需要处理成数字的形式。 1.3 如何进行分词 以英文为例&#xff1a; 1 按空格划分 这应该是最简单也最直观的做法了。这…

Vue3setup的参数说明

setup的两个参数 setup包含两个参数&#xff0c;一个为props、一个为context &#xff08;均为形参&#xff09; props&#xff1a;值为对象&#xff0c;包含&#xff1a;组件外部传递过来&#xff0c;且组件内部声明接收了的属性。context&#xff1a;上下文对象 <scrip…

26-DOM常见的操作(了解)

一、DOM &#x1f37f;&#x1f37f;&#x1f37f;文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口 它提供了对文档的结构化的表述&#xff0c;并定义了一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构&#xff0c;样式和内容 例如&#xff1a;随着…

2023再更新下百度蜘蛛最新UA(User Agent)

其实百度蜘蛛的UA一直没什么变化&#xff0c;有不少朋友以为百度蜘蛛修改特征了&#xff0c;我查了下日志&#xff0c;把最新的UA整理出来给大家。 百度UA信息&#xff1a; Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) 神码ai在了…

LVS负载均衡群集——DR直接路由模式

一.LVS数据包流向分析 1.数据包流向 &#xff08;1&#xff09;客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。 &#xff08;2&#xff09;Director Ser…

Spring Bean 的生命周期快速记忆

引言 “请你描述下 Spring Bean 的生命周期&#xff1f;”&#xff0c;这是面试官考察 Spring 的常用问题&#xff0c;可见是 Spring 中很重要的知识点。 我之前在准备面试时&#xff0c;去网上搜过答案&#xff0c;大多以下图给出的流程作为答案。 如何记忆 Spring Bean 的…

电影《消失的她》观后感

上周看了电影《消失的她》&#xff0c;也许是和朋友一起看的原因吧&#xff0c;这次电影的体验感觉比以往更好&#xff0c;这或许就是共同经历的缘故&#xff0c;同时看完电影&#xff0c;还可以大家一起讨论下。本部电影讲述一个富商国外旅游&#xff0c;女友莫名消失&#xf…

LVS负载均衡群集博客

文章目录 LVS负载均衡群集一.什么是集群1.群集的含义 二.集群使用在那个场景三.集群的分类1.负载均衡器群集2.高可用群集3.高性能运算群集 四.负载集群的架构1.第一层&#xff0c;负载调度器2.第二层&#xff0c;服务器池3.第三层&#xff0c;共享存储 五.负载均衡集群的工作模…