R折线图(自备)

目录

折线图基础

创建散点和折线图

复杂折现加图例

折线图+柱状图

数据处理

进行差异检验

基础绘图折线

基础绘图箱线

进行合并

双轴柱状与折线图

数据


折线图基础
创建散点和折线图
rm(list = ls()) 
opar <-par(no.readonly=TRUE)##自带orange数据集
par(mfrow=c(1,2))#拼图
t1 <-subset(Orange,Tree==1)##提取使用数据集
head(t1)
head(t1)
  Tree  age circumference
1    1  118            30
2    1  484            58
3    1  664            87
4    1 1004           115
5    1 1231           120
6    1 1372           142
##散点图
p1 <- plot(t1$age,t1$circumference,
     xlab="Age(days)",
     ylab="Circumference(mm)",
     main="Orange Tree 1 Growth")#标题
p1
##折线图
p2 <-plot(t1$age,t1$circumference,
     xlab="Age(days)",
     ylab="Circumference(mm)",
     main="Orange Tree 1 Growth",
     type = "b")#标题
p2

折线图绘制参数:plot(x,y,type=)         lines(x,y,type=)


复杂折现加图例
#使用ggplot 绘制折线图#
data <- Orange

head(Orange)
Tree  age circumference
1    2  118            30
2    2  484            58
3    2  664            87
4    2 1004           115
5    2 1231           120
6    2 1372           142
p <- ggplot(data = Orange, aes(x=age, y=circumference, linetype=Tree, color=Tree)) +
  geom_point() + 
  geom_line(lwd = 1) + 
  scale_color_brewer(palette = "Set1") + ##颜色配色https://zhuanlan.zhihu.com/p/657907907
  labs(title = "Orange Tree Growth", x = "Age(days)", y = "Circumference(mm)") + 
  theme_bw() +
  theme(legend.position = c(0.2,0.8)) ##"right" 图例位置

p


折线图+柱状图

感谢R语言ggplot2 | 学习Nature文章精美配图 | 折线图 | 柱状图 | 误差棒 | 灰色背景 | 图片叠加 - 知乎 (zhihu.com)

数据:https://static-content.springer.com/esm/art%3A10.1038%2Fs41586-021-04194-8/MediaObjects/41586_2021_4194_MOESM11_ESM.xlsx

接受不同处理的HFD喂养小鼠的体重变化:非SMK(n = 37),SMK(n = 38),非SMK + abx(n = 40)和SMK + abx(n = 39)。从四个独立的重复序列中汇总的结果。最后一天,进行单因素方差分析(ANOVA)和Sidak校正;插图显示了烟雾暴露(暴露)或停止烟雾暴露(停止)会话、单因素方差分析和 Sidak 校正时的曲线下面积 (iAUC) 权重变化增量。

下载数据进行处理:R语言长款数据转换(自备)_r语言宽数据变成长数据-CSDN博客

数据处理

rm(list = ls()) 
library(tidyverse) 
library(reshape2)
data <- read.csv('Nature data.CSV',header = T)
head(data) 
##折线图转换为长数据:[1] "treat"  "Day"    "value1" "value2" "value3"
#根据"treat"分组  "Day"(也是X轴内容)转换为长数据,将value合并为1列
data1 <- data[,c(1:5)] %>% 
  melt(id=c('treat','Day'))

##折线误差棒errorbar上下误差位置
topbar <- function(x){      
  return(mean(x)+sd(x)/sqrt(length(x))) #误差采用了mean+-sem
}
bottombar <- function(x){
  return(mean(x)-sd(x)/sqrt(length(x)))
}
head(data1)
    treat Day variable value
1 Non_SMK   0   value1   0.0
2 Non_SMK   7   value1   6.7
3 Non_SMK  14   value1  14.0
4 Non_SMK  21   value1  15.6
5 Non_SMK  28   value1  24.0
6 Non_SMK  35   value1  30.0
进行差异检验

连续性变量的组间差异分析_连续变量和连续变量差异性分析-CSDN博客

##检验测试##
tdat <- data[,c(1:5)]
tdat$mean <- rowMeans(select(tdat,c(3:5)))##计算第3-5行的均值,可以用于计算相关性
#单因素方差分析#
race.aov <-aov(mean ~treat,data = tdat)
summary(race.aov)
#Df Sum Sq Mean Sq F value Pr(>F)
#treat        3  751.2   250.4    2.09  0.134
#Residuals   20 2396.6   119.8   

##两组间最后一组数据t检验## 
group1 <- tdat[tdat$treat =="Non_SMK+abx"& tdat$Day=="35",c(3:5)]
group2 <- tdat[tdat$treat =="SMK+abx" & tdat$Day=="35",c(3:5)]
t.test(group1,group2,var.equal =TRUE)
#t = 12.267, df = 4, p-value = 0.0002536  ****

group3 <- tdat[tdat$treat =="SMK"& tdat$Day=="35",c(3:5)]
t.test(group2,group3,var.equal =TRUE)#一样的
#t = -7.4158, df = 4, p-value = 0.001765 ***
基础绘图折线
#绘图赋值为p
p0 <- ggplot(data1,aes(x=Day,y=value,color=treat))+#Day为X,value值为Y,分组颜色treat
  geom_rect(aes(xmin=21,xmax=40,ymin=(-Inf),ymax=Inf),##后半部分色块设置
            fill='grey90',color='grey90')+
  geom_vline(xintercept =21,linetype=2,cex=1.2)+            #添加虚线
  stat_summary(geom = 'line',fun='mean',cex=2.5)+           #折线
  stat_summary(geom = 'errorbar',                           #误差磅
               fun.min = bottombar,fun.max = topbar,
               width=1,cex=0.8,aes(color=treat))+
  stat_summary(geom = 'point',fun='mean',aes(fill=treat),   #点
               size=5,pch=21,color='black')+
  theme_classic(base_size = 15)+
  theme(legend.position = 'none')#top
p0

##点的颜色修改以及显著性标记的添加##
p1 <- p0+
  scale_color_manual(values = c('#5494cc','#0d898a','#e18283','#f9cc52'))+##线条的颜色
  scale_fill_manual(values = c('red','#0d898a','#e18283','white'))+ ##点的颜色
  scale_y_continuous(breaks = seq(0,60,20),expand = c(0,0))+              #Y轴范围
  scale_x_continuous(breaks = seq(0,40,10),expand = c(0,0))+              #X轴范围
  labs(y='Weight change(%)')+
  theme(axis.line = element_line(size = 1),                               #线条设置
        axis.text = element_text(color = 'black'),
        axis.ticks = element_line(size = 1,color='black'))+
  annotate(geom = 'segment',x=36.2,xend=36.2,y=18,yend=26,cex=1.2)+       ##显著性标注设置-线段
  annotate(geom = 'text',label='***',x=37.5,y=22,size=7,angle=90)+        ##显著性标注设置-数值或***
  annotate(geom = 'segment',x=38,xend = 38,y=18,yend = 40,cex=1.2)+
  annotate(geom = 'text',label='****',x=39.5,y=29,size=7,angle=90)
p1

##折线图图列的添加并且修改了图例形状##
linechart <- p1+
  coord_cartesian(clip = 'off',ylim = c(0,60),xlim = c(0,40))+
  theme(plot.margin = margin(1.5,0.5,0.5,0.5,'cm'))+
  geom_rect(aes(xmin=0,xmax=3,ymin=63,ymax=65),fill='#5494cc',color='black')+
  geom_rect(aes(xmin=10,xmax=13,ymin=63,ymax=65),fill='#0d898a',color='black')+
  geom_rect(aes(xmin=20,xmax=23,ymin=63,ymax=65),fill='#e18283',color='black')+
  geom_rect(aes(xmin=30,xmax=33,ymin=63,ymax=65),fill='#f9cc52',color='black')+
  annotate('text',x=6,y=64,label='Non-SMK',size=4)+
  annotate('text',x=15.2,y=64,label='SMK',size=4)+
  annotate('text',x=26.4,y=64,label='Non-SMK+\nabx',size=4)+
  annotate('text',x=36,y=64,label='SMK+abx',size=4)
linechart


基础绘图箱线
##提取箱线图数据
data2 <- data[,6:9] %>% 
  gather(key = treat)
head(data2)
data3 <- data[,10:13] %>% 
  gather(key = treat)

#左边柱状图:
leftchart <- ggplot(data2,aes(factor(treat,levels = c('SMK.abx','Non_SMK.abx','SMK','Non_SMK')),
                               value))+
    stat_summary(geom = 'bar',fun = 'mean',fill='white',color='black',width=0.7,cex=1)+
    stat_summary(geom = 'errorbar',
                 fun.min = bottombar,fun.max = topbar,
                 width=0.3,cex=0.8,color='black')+
    geom_jitter(aes(color=factor(treat,levels = c('SMK.abx','Non_SMK.abx','SMK','Non_SMK'))),
                width = 0.1,size=1.5)+
    scale_color_manual(values = c('#f9cc52','#0d898a','#e18283','#5494cc'))+
    labs(x=NULL,y=NULL)+
    scale_y_continuous(limits = c(-40,600),expand = c(0,0))+
    geom_hline(yintercept =0,cex=1)+
    theme_classic(base_size = 15)+
    theme(axis.ticks.y = element_blank(),
          axis.text.y= element_blank(),
          legend.position = 'none',
          axis.line = element_line(size = 1),
          axis.text = element_text(color = 'black'),
          axis.ticks = element_line(size = 1,color='black'))+
    coord_flip()+
    annotate(geom = 'segment',x=1,xend=2,y=530,yend=530,cex=1.2)+
    annotate(geom = 'text',label='****',x=1.5,y=570,size=6,angle=90)+
    annotate(geom = 'segment',x=3,xend =4,y=370,yend =370,cex=1.2)+
    annotate(geom = 'text',label='****',x=3.5,y=410,size=6,angle=90))
leftchart

#右边柱状图:
rightchart <- ggplot(data3,aes(factor(treat,levels = c('SMK.abx.1','Non_SMK.abx.1','SMK.1','Non_SMK.1')),
                               value))+
  stat_summary(geom = 'bar',fun = 'mean',fill='white',color='black',width=0.7,cex=1)+
  stat_summary(geom = 'errorbar',
               fun.min = bottombar,fun.max = topbar,
               width=0.3,cex=0.8,color='black')+
  geom_jitter(aes(color=factor(treat,levels = c('SMK.abx.1','Non_SMK.abx.1','SMK.1','Non_SMK.1'))),
              width = 0.1,size=1.5)+
  scale_color_manual(values = c('#f9cc52','#0d898a','#e18283','#5494cc'))+
  labs(x=NULL,y=NULL)+
  scale_y_continuous(limits = c(-40,500),expand = c(0,0))+
  geom_hline(yintercept =0,cex=1)+
  theme_classic(base_size = 15)+
  theme(axis.ticks.y = element_blank(),
        axis.text.y= element_blank(),
        legend.position = 'none',
        axis.line = element_line(size = 1),
        axis.text = element_text(color = 'black'),
        axis.ticks = element_line(size = 1,color='black'),
        plot.background = element_rect(fill = "transparent",colour = NA),
        panel.background = element_rect(fill = "transparent",colour = NA))+
  coord_flip()+
  annotate(geom = 'segment',x=1,xend=2,y=420,yend=420,cex=1.2)+
  annotate(geom = 'text',label='****',x=1.5,y=460,size=6,angle=90)+
  annotate(geom = 'segment',x=3,xend =4,y=430,yend =430,cex=1.2)+
  annotate(geom = 'text',label='****',x=3.5,y=470,size=6,angle=90)
rightchart


进行合并
#要叠加的图片先用ggplotGrob()函数处理:
leftchart <- ggplotGrob(leftchart)
rightchart <- ggplotGrob(rightchart)

#叠加绘图:
linechart+
  annotation_custom(leftchart,xmin=0,xmax=20.5,ymin=40,ymax=57)+
  annotation_custom(rightchart,xmin=21,xmax=39.5,ymin=40,ymax=57)+
  annotate('text',label='iAUC: Exposure',x=10.5,y=58.5,size=7)+
  annotate('text',label='iAUC: Cessation',x=31,y=58.5,size=7)

感谢:“R语言ggplot2科研绘图”的代码,本文主要是复现流程和差异计算补充!!


双轴柱状与折线图

Nature图表复现|双轴柱状与折线图 (qq.com)

数据

rm(list = ls()) 
library(tidyverse)
library(gapminder)
library(Hmisc)
library(gapminder)

data <- gapminder
##提取continent=="Asia"的数据
df <- data %>% filter(continent=="Asia") %>% 
  select(1,3,4,6) %>% mutate(year=as.character(year))

p <- ggplot() +
  stat_summary(data=df, aes(year, lifeExp), fun = "mean", geom = "bar", alpha = 0.7, fill="#00A08A") +
  # 添加预期寿命(lifeExp)的误差条
  stat_summary(data=df, aes(year, lifeExp), fun.data = "mean_cl_normal", geom = "errorbar", width = .2, color="#00A08A") +
  # 添加人均GDP(gdpPercap)的误差条
  stat_summary(data=df %>% mutate(gdpPercap=gdpPercap/20), aes(year, gdpPercap), fun = mean, geom = "errorbar", width=.2, color="#F98400",
               fun.max = function(x) mean(x) + sd(x) / sqrt(length(x)),
               fun.min = function(x) mean(x) - sd(x) / sqrt(length(x))) +
  # 添加人均GDP(gdpPercap)的平均值点
  stat_summary(data=df %>% mutate(gdpPercap=gdpPercap/20), aes(year, gdpPercap), fun = "mean", geom = "point", size=3, color="#F98400") +
  # 添加人均GDP(gdpPercap)的平均值线
  stat_summary(data=df %>% mutate(gdpPercap=gdpPercap/20), aes(year, gdpPercap, group=1), fun = "mean", geom = "line", color="#F98400") +
  # 设置y轴的比例和标签
  scale_y_continuous(expand = c(0, 1), breaks = scales::pretty_breaks(n = 12),
                     sec.axis = sec_axis(~. * 20, breaks = scales::pretty_breaks(n = 12),
                                         name = "gdpPercap")) +
  # 应用主题
  theme_test() +
  # 自定义主题设置
  theme(panel.background = element_blank(),
        axis.ticks.length.x.bottom = unit(-0.05, "in"),
        axis.ticks.length.y.left = unit(-0.05, "in"),
        axis.ticks.length.y.right = unit(-0.05, "in"),
        axis.line.y.left = element_line(color="#00A08A"),
        axis.line.y.right = element_line(color="#F98400"),
        axis.line.x.bottom = element_line(color="black"),
        axis.line.x.top = element_line(color="grey80"),
        axis.text.y.right = element_text(color="#F98400", margin = margin(l = 5, r = 10)),
        axis.text.y.left = element_text(color="#00A08A", margin = margin(l = 10, r = 5)),
        axis.title.y.left = element_text(color="#00A08A", face="bold"),
        axis.title.y.right = element_text(color="#F98400", face="bold"),
        axis.title.x.bottom = element_blank())
p
dev.off()


参考:

1:《R语言实战手册》

2:Gut microbiota modulates weight gain in mice after discontinued smoke exposure

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

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

相关文章

科技引领趋势:3D元宇宙展厅在各行业中的应用及其未来展望

随着技术的不断进步&#xff0c;3D元宇宙展厅正逐渐成为各行各业展示产品的新选择。相较于传统的线下展厅&#xff0c;3D元宇宙展厅以其独特的优势&#xff0c;为产品展示和品牌推广提供了全新的可能性。 一、虚拟与现实的完美融合 3D元宇宙展厅是指在虚拟世界中构建的三维展览…

小程序接入第三方信息流流程 下载SDK

由第三方信息流提供相应的SDK下载链接以及接入说明和开发文档或其他方式接入&#xff0c;如果第三方能支持小程序SDK&#xff0c;则不需要后面步骤&#xff0c;只需要提供相关开发文档和接入方式接口 接入SDK 后台开发人员接入第三方提供的SDK&#xff0c;并进行相关接口开发…

DFS深度优先搜索刷题(二)

一.P1683 入门 算法思想&#xff1a;设置瓷砖状态st&#xff0c;这里瓷砖状态是否走过决定计数与否&#xff0c;因为可以重复走过但只记一次&#xff0c;所以可以不用回溯。每一次dfs都记录此时的坐标与进入可能的新坐标。 const int N 25;int W, H; char map[N][N];//存地图…

二叉树的遍历、存储、性质、定义——数据结构——day7

树的定义 树的定义&#xff1a;树(Tree)是n(n≥0)个结点的有限集。n0 时称为空树。在任意一棵非空树中&#xff1a; (1)有且仅有一个特定的称为根(Root)的结点&#xff1b; (2)当n>1时&#xff0c;其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每一个集…

可视化图表:折线图,非常简单的一类图表。

一、折线图的作用 折线图是一种常用的可视化图表&#xff0c;主要用于展示数据随时间或其他连续变量的变化趋势。它的作用包括&#xff1a; 变化趋势的展示&#xff1a;折线图可以清晰地展示数据随时间或其他连续变量的变化趋势。通过连接数据点&#xff0c;可以观察到数据的上…

HTTPS 从懵懵懂懂到认知清晰、从深度理解到落地实操

Https 在现代互联网应用中&#xff0c;网上诈骗、垃圾邮件、数据泄露的现象时有发生。为了数据安全&#xff0c;我们都会选择采用https技术。甚至iOS开发调用接口的时候&#xff0c;必须是https接口&#xff0c;才能调用。现在有部分浏览器也开始强制要求网站必须使用https&am…

【jenkins+cmake+svn管理c++项目】创建一个项目

工作台点击"新建item",进入下图&#xff0c;选择Freestyle project,并输入项目名称&#xff0c; 点击确定之后进入项目配置页面&#xff0c;填写描述&#xff0c;然后在下边源码管理部分选择svn, 填写代码的url 上图的Credentials处填写svn的有效登录名和密码&#x…

搭建hive环境,并解决后启动hive命令报 hive: command not found的问题

一、问题解决 1、问题复现 2、解决问题 查阅资料得知该问题大部分是环境变量配置出了问题&#xff0c;我就输入以下命令进入配置文件检查自己的环境变量配置&#xff1a; [rootnode03 ~]# vi /etc/profile 检查发现自己的hive配置没有问题 &#xff0c;于是我就退出&#xf…

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.6-3.8

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第三周&#xff1a;浅层神经网络(Shallow neural networks)3.6 激活函数&#xff08;Activation functions&#xff09;3.7 为什么需要非线性激活函数&#xff1f;&#xff08;why need a non…

QT+Opencv+yolov5实现监测

功能说明&#xff1a;使用QTOpencvyolov5实现监测 仓库链接&#xff1a;https://gitee.com/wangyoujie11/qt_yolov5.git git本仓库到本地 一、环境配置 1.opencv配置 将OpenCV-MinGW-Build-OpenCV-4.5.2-x64文件夹放在自己的一个目录下&#xff0c;如我的路径&#xff1a; …

Docker服务

任务描述&#xff1a;请采用podman&#xff0c;实现有守护程序的容器应用。 &#xff08;1&#xff09;在linux2上安装docker-ce&#xff0c;导入rocky镜像。 &#xff08;2&#xff09;创建名称为skills的容器&#xff0c;映射本机的8000端口到容器的80端口&#xff0c;在容…

2月线上速溶咖啡行业数据分析:“减肥咖啡”引领电商新潮流

随着生活节奏的加快&#xff0c;速溶咖啡因其便捷性受到广大消费者的青睐。不过&#xff0c;在如今世界咖啡市场激烈竞争的情况下&#xff0c;中国速溶咖啡市场也受到影响&#xff0c;增速有所放缓。 根据鲸参谋电商数据平台显示&#xff0c;2月线上综合电商&#xff08;京东天…

标题:深入了解 ES6 模块化技术

在 ES6 版本之前&#xff0c;JavaScript 一直缺乏一个内置的模块系统&#xff0c;这给大型项目的开发带来了一些挑战。ES6 引入了模块化的概念&#xff0c;为 JavaScript 开发者提供了一种更好的组织和管理代码的方式。 模块是 JavaScript 的一种代码组织方式&#xff0c;它将代…

Chrome 插件各模块使用 Fetch 进行接口请求

Chrome 插件各模块使用 Fetch 进行接口请求 常规网页可以使用 fetch() 或 XMLHttpRequest API 从远程服务器发送和接收数据&#xff0c;但受到同源政策的限制。 内容脚本会代表已注入内容脚本的网页源发起请求&#xff0c;因此内容脚本也受同源政策的约束&#xff0c;插件的来…

AI+软件工程:10倍提效!用ChatGPT编写系统功能文档

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT&#xff0c;我们能让编写系统功能文档的效率提升10倍以上。 用ChatGPT生成系统功能文档 我们以线上商城系统为例&#…

阿里云ESC云服务器搭建手册

1.开通阿里云ESC云服务 1.1 打开阿里云官网 https://www.aliyun.com/ 自行注册登录 1.2 选择产品 1.3 点击免费试用 新用户可以免费试用3个月 1.4 选择服务器配置 1.5 选择操作系统 创建服务器实例的时候会自动帮我们创建一个操作系统 1.6 点击立即试用 1.7 创建成功后点击前往…

2010年之前电脑ubuntu安装nvidia驱动黑屏处理

装好驱动 仿真fps直接到60Hz 陈旧设备 都是非常老旧的电脑&#xff0c;没钱换新电脑&#xff0c;就这么穷…… 电脑详细配置&#xff1a; 冲动 想装显卡驱动提升一下性能&#xff0c;结果……黑了 黑习惯了也无所谓&#xff0c;几分钟就能解决&#xff0c;关键还是太穷&…

金融投贷通(金融投资+贷款通)项目准备

金融投贷通&#xff08;金融投资贷款通&#xff09;项目准备 专业术语投资专业术语本息专业术语还款专业术语项目介绍三个子系统技术架构核心流程发布借款标投资业务 项目实施测试流程测试步骤 专业术语 投资专业术语 案例&#xff1a;张三借给李四5W&#xff0c;约定期满1年后…

springboot项目配置属性jasypt加密明文

springboot项目配置属性jasypt加密明文 在pom.xml文件引入依赖包 <!-- jasypt加密--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version&g…

52个AIGC视频生成算法模型介绍

基于Diffusion模型的AIGC生成算法日益火热&#xff0c;其中文生图&#xff0c;图生图等图像生成技术普遍成熟&#xff0c;很多算法从业者开始从事视频生成算法的研究和开发&#xff0c;原因是视频生成领域相对空白。 AIGC视频算法发展现状 从2023年开始&#xff0c;AIGC视频的新…
最新文章