R语言:箱线图绘制(添加平均值趋势线)

箱线图绘制

  • 1. 写在前面
  • 2.箱线图绘制
    • 2.1 相关R包导入
    • 2.2 数据导入及格式转换
    • 2.3 ggplot绘图

1. 写在前面

  今天有时间把之前使用过的一些代码和大家分享,其中箱线图绘制我认为是非常有用的一个部分。之前我是比较喜欢使用origin进行绘图,但是绘制的图不太好看,并且需要进行不断调整,不太方便,所以开始使用R语言进行绘制。

2.箱线图绘制

2.1 相关R包导入

library(openxlsx)
library(tidyverse)
library(ggsignif)
library(ggpubr)
library(RColorBrewer)
library(ggplot2)

2.2 数据导入及格式转换

  由于使用ggplot2进行绘图需要将原本的表格数据进行转换,一下为数据导入和转换方法:
数据格式:
在这里插入图片描述

在这里插入图片描述

setwd("C:/Users/Desktop/Practice/")
dataT1 <- read.xlsx("T1.xlsx", sheet = 1) # 文件名+sheet的序号
dataS1 <- read.xlsx("S1.xlsx", sheet = 1) # 文件名+sheet的序号
summary(dataT1)
head(dataT1)
summary(dataS1)
head(dataS1)#使用tidyverse包对数据进行处理
dataT1 <- dataT1 %>% gather(key = 'group',value = 'values') %>%  #gather()函数可以把多列数据合并成一列数据filter(!is.na(values)) 
head(dataT1) 
summary(dataT1)dataS1 <- dataS1 %>% gather(key = 'group',value = 'values') %>%  #gather()函数可以把多列数据合并成一列数据filter(!is.na(values)) 
head(dataS1) 
summary(dataS1)dataT1$group<-factor(dataT1$group,levels = c("2dm","4dm","6dm","8dm","10dm"))
dataS1$group<-factor(dataS1$group,levels = c("2dm","4dm","6dm","8dm","10dm"))

数据转换格式:

> head(dataT1)group values
1   2dm 0.8640
2   2dm 0.8500
3   2dm 0.8680
4   2dm 0.8850
5   2dm 0.8870
6   2dm 0.8951
> head(dataS1)group values
1   2dm  0.619
2   2dm  0.610
3   2dm  0.632
4   2dm  0.700
5   2dm  0.679
6   2dm  0.711

2.3 ggplot绘图

(p1 <- ggplot(data = dataT1, aes(x = group, y = values)) +stat_boxplot(geom = "errorbar", width = 0.3, size = 0.8, aes(color = group)) +geom_boxplot(aes(x = group, y = values, colour = group), size = 1.0, width = 0.6) +geom_jitter(mapping = aes(x = group, y = values, colour = group), size = 1.5, alpha = 0.3) +stat_summary(fun = "mean", geom = "point", color = "black", size = 2) +stat_summary(fun = "mean", geom = "line", aes(group = 1), color = "black", size = 1) +scale_color_manual(limits = c("2dm","4dm","6dm","8dm","10dm"), values = c("#8dd3c7", "#fdb462", "#bebada", "#fb8072", "#80b1d3")) +theme_classic(base_line_size = 1) +labs(x = "空间分割等级", y = "Kappa") +theme(text = element_text(size = 16, family = "serif"),axis.ticks.length = unit(0.2, "cm"),  # 设置刻度线的长度axis.ticks = element_line(size = 1),  # 设置刻度线的粗细legend.position = "none",plot.title = element_text(size = 16, colour = "black", hjust = 0.5),axis.title.y = element_text(size = 16, color = "black", vjust = 1.9, hjust = 0.5, angle = 90),legend.title = element_text(color = "black", size = 16),legend.text = element_text(color = "black", size = 16),axis.text.x = element_text(size = 16, color = "black", vjust = 0.5, hjust = 0.5, angle = 0),axis.text.y = element_text(size = 16, color = "black", vjust = 0.5, hjust = 0.5, angle = 0),panel.border = element_rect(color = "black", size = 1, fill = NA),panel.grid.major = element_blank(),panel.grid.minor = element_blank(),axis.line = element_line(colour = "black", size = 2),axis.line.x = element_line(colour = "black", size = 0),axis.line.y = element_line(colour = "black", size = 0))
)(p2 <- ggplot(data = dataS1, aes(x = group, y = values)) +stat_boxplot(geom = "errorbar", width = 0.3, size = 0.8, aes(color = group)) +geom_boxplot(aes(x = group, y = values, colour = group), size = 1.0, width = 0.6) +geom_jitter(mapping = aes(x = group, y = values, colour = group), size = 1.5, alpha = 0.3) +stat_summary(fun = "mean", geom = "point", color = "black", size = 2) +stat_summary(fun = "mean", geom = "line", aes(group = 1), color = "black", size = 1) +scale_color_manual(limits = c("2dm","4dm","6dm","8dm","10dm"), values = c("#8dd3c7", "#fdb462", "#bebada", "#fb8072", "#80b1d3")) +theme_classic(base_line_size = 1) +labs(x = "空间分割等级", y = "Kappa") +theme(text = element_text(size = 16, family = "serif"),axis.ticks.length = unit(0.2, "cm"),  # 设置刻度线的长度axis.ticks = element_line(size = 1),  # 设置刻度线的粗细legend.position = "none",plot.title = element_text(size = 16, colour = "black", hjust = 0.5),axis.title.y = element_text(size = 16, color = "black", vjust = 1.9, hjust = 0.5, angle = 90),legend.title = element_text(color = "black", size = 16),legend.text = element_text(color = "black", size = 16),axis.text.x = element_text(size = 16, color = "black", vjust = 0.5, hjust = 0.5, angle = 0),axis.text.y = element_text(size = 16, color = "black", vjust = 0.5, hjust = 0.5, angle = 0),panel.border = element_rect(color = "black", size = 1, fill = NA),panel.grid.major = element_blank(),panel.grid.minor = element_blank(),axis.line = element_line(colour = "black", size = 2),axis.line.x = element_line(colour = "black", size = 0),axis.line.y = element_line(colour = "black", size = 0))
)

最后将两张图进行拼接并保存:

p1_cowplot <- ggdraw(p1)
p2_cowplot <- ggdraw(p2)
combined_plot <- plot_grid(p1_cowplot, p2_cowplot, ncol = 2, labels = "AUTO") #, labels = "AUTO"
combined_plot
ggsave("combined_plot.jpg", width = 28, height = 10, units = "cm", dpi= 600)

结果展示:

在这里插入图片描述

欢迎大家交流指正!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙内核框架

1 内核概述 内核简介 用户最常见到并与之交互的操作系统界面&#xff0c;其实只是操作系统最外面的一层。操作系统最重要的任务&#xff0c;包括管理硬件设备&#xff0c;分配系统资源等&#xff0c;我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模…

VS编译器对scanf函数不安全报错的解决办法(详细步骤)

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

kubesphere部署k8s-v1.23.10

功能&#xff1a; &#x1f578; 部署 Kubernetes 集群 &#x1f517; Kubernetes 多集群管理 &#x1f916; Kubernetes DevOps &#x1f50e; 云原生可观测性 &#x1f9e9; 基于 Istio 的微服务治理 &#x1f4bb; 应用商店 &#x1f4a1; Kubernetes 边缘节点管理 &#x1…

数据分析基础之《pandas(4)—pandas画图》

1、DataFrame.plot(xNone, yNone, kindline) 说明&#xff1a; x&#xff1a;设置x轴标签 y&#xff1a;设置y轴标签 kind&#xff1a; line 折线图 bar 柱状图 hist 直方图 pie 饼图 scatter 散点图 # 找到p_change和turnover之间的关系 data.plot(xvolume, yturnover, kinds…

AUTOSAR CP--chapter2Autosar简介

Autosar简介 安全&#xff1a;使用严格的标准化去约束&#xff1b; 高效&#xff1a;通过提高软件模块的可移植性和复用性来提升&#xff1b; 灵活&#xff1a;通过上位机剪裁配置&#xff0c;自动生辰的手段来实现。 Autosar标准从行业高度统一了各个角色间的分工、接口以及方…

Flink 1.18.1的基本使用

系统示例应用 /usr/local/flink-1.18.1/bin/flink run /usr/local/flies/streaming/SocketWindowWordCount.jar --port 9010nc -l 9010 asd asd sdfsf sdf sdfsdagd sdf单次统计示例工程 cd C:\Dev\IdeaProjectsmvn archetype:generate -DarchetypeGroupIdorg.apache.flink -…

计算机服务器中了locked勒索病毒怎么处理,locked勒索病毒解密数据恢复

网络技术的不断发展&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但也为网络安全带来严重威胁。近期&#xff0c;云天数据恢复中心接到某集团企业的求助&#xff0c;企业的计算机服务器遭到了locked勒索病毒攻击&#xff0c;导致企业系统内部的金蝶账套全部被加密&a…

正则表达式补充以及sed

正则表达式&#xff1a; 下划线算 在单词里面 解释一下过程&#xff1a; 在第二行hello world当中&#xff0c;hello中的h 与后面第一个h相匹配&#xff0c;所以hello中的ello可以和abcde匹配 在world中&#xff0c;w先匹配h匹配不上&#xff0c;则在看0&#xff0c;r&#…

英码科技携手昇腾共建算力底座:推出EA500I超强AI处理能力边缘计算盒子!

在数字经济浪潮中&#xff0c;算力已成为不可或缺的驱动力&#xff0c;为各行各业的数字化转型提供了强大的推动力。面对多元化和供需不平衡的挑战&#xff0c;需要实现从理论架构到软硬件实现的质的飞跃&#xff0c;以满足持续增长的算力需求&#xff0c;华为昇腾在这一方面展…

游戏后端如何实现服务器之间的负载均衡?

在当今的游戏行业中&#xff0c;随着游戏用户数量的不断增加&#xff0c;如何实现服务器之间的负载均衡成为了一个亟待解决的问题。游戏后端作为游戏的重要组成部分&#xff0c;承载着游戏逻辑处理和数据存储等功能&#xff0c;因此游戏后端的负载均衡问题尤为重要。本文将详细…

如何实现算力智能选择

为什么需要对算力进行智能选择 随着科技的飞速发展&#xff0c;算力已经成为制约人工智能应用性能的关键因素。为了满足各种应用场景下的计算需求&#xff0c;算力网络应运而生&#xff0c;它通过对分散的计算资源进行整合&#xff0c;并灵活地分配和调度&#xff0c;逐步推动算…

虚拟飞控计算机:飞行控制系统验证与优化的利器

01.背景介绍 随着航空技术的飞速发展&#xff0c;飞行控制系统作为飞机的心脏&#xff0c;全面负责监测、调整和维持飞行器的姿态、航向、高度等参数&#xff0c;用以确保飞行的安全和稳定。为了满足这些要求&#xff0c;现代飞控系统通常采用先进的处理器和外设来确保其高效、…

智能运维哪些算法?智能运维包含哪些

在智能运维领域&#xff0c;详细介绍一些关键的算法&#xff0c;并阐述这些算法是如何被应用于智能运维系统中的。此外&#xff0c;关于智能运维中包含的主要组成部分或功能模块&#xff0c;以及它们各自的作用和重要性。如何应用再场景中应用在智能运维行业&#xff0c;一些关…

从零开始手写mmo游戏从框架到爆炸(三)— 服务启动接口与网络事件监听器

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 上一章我们完成了netty服务启动的相关抽象&#xff08;https://blog.csdn.net/money9sun/article/details/136025471&#xff09;&#xff0c;这一章我们再新增一个全…

2023 OpenHarmony 年度运营报告

汇聚 70 家企业 6700名贡献者力量&#xff0c; OpenHarmony 已成为下一代智能终端操作系统根社区&#xff1b; 我们在成长,OpenHarmony 项目群成员单位增至 35 家&#xff1b; 2023 年持续迭代更新 6 个版本及 OpenHarmony4.0 重点特性简介……

09_树莓派_树莓派外设板_GPIO_按键的中断与消抖

目录 1.树莓派外设集成板总体介绍 2.第一部分 按键矩阵 GPIO_按键与中断 3.实现效果 1.树莓派外设集成板总体介绍 1&#xff09;前言&#xff1a;这是一块为了验证树莓派【兼容树莓派多个型号】的40pins的外设接口的外接板&#xff0c;告别复杂的面包板外设搭建。【欢迎各位…

EMNLP 2023精选:Text-to-SQL任务的前沿进展(上篇)——正会论文解读

导语 本文记录了今年的自然语言处理国际顶级会议EMNLP 2023中接收的所有与Text-to-SQL相关&#xff08;通过搜索标题关键词查找得到&#xff0c;可能不全&#xff09;的论文&#xff0c;共计12篇&#xff0c;包含5篇正会论文和7篇Findings论文&#xff0c;以下是对这些论文的略…

安卓动态链接库文件体积优化探索实践

背景介绍 应用安装包的体积影响着用户下载量、安装时长、用户磁盘占用量等多个方面&#xff0c;据Google Play统计&#xff0c;应用体积每增加6MB&#xff0c;安装的转化率将下降1%。 安装包的体积受诸多方面影响&#xff0c;针对dex、资源文件、so文件都有不同的优化策略&…

爬虫实战--人民网

文章目录 前言发现宝藏 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚&#xff0c;文章中如果有记录错误&#xff0c;欢迎读者朋友们…

[UI5 常用控件] 07.SplitApp,SplitContainer

文章目录 前言1. SplitApp1.1 组件结构1.2 Demo1.3 mode属性 2. SplitContainer 前言 本章节记录常用控件SplitApp&#xff0c;SplitContainer。主要功能是在左侧显示Master页面&#xff0c;右侧显示Detail页面。 Master页面和Detail页面可以由多个Page组成&#xff0c;并支持…