温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的

发布时间:2021-11-22 14:55:35 来源:亿速云 阅读:691 作者:柒染 栏目:大数据

R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

连续型数据的的分组比较在科研生活中非常常见,比如:实验组和对照组基因表达量的比较临床病人存活组和死亡组某项检查指标的比较 等等。检验两组连续型数据之间是否存在差异通常会使用T检验。对数据进行展示通常可以使用柱形图箱线图小提琴图直方图散点图等几种方式。今天的推文分别介绍一下以上5种图形的ggplot2实现代码。

 以下代码用到3个R语言包

分别是ggplot2 用来画图RColorBrewer 用来生成颜色dplyr 用来整理数据

ggplot2dplyr如果是第一次使用需要安装,安装用到的命令是

install.packages("ggplot2")
install.packages("dplyr")
   首先是模拟数据集
set.seed(1234)
crp1<-round(abs(rnorm(200, mean = 150, sd = 48)))
status1<-rep("Death", 200)
data1<-data.frame(crp1, status1)
crp2<-round(abs(rnorm(200, mean = 70, sd = 20)))
status2<-rep("Survivor", 200)
data2<-data.frame(crp2, status2)
colnames(data1)[1]<-"CRP"
colnames(data1)[2]<-"Status"
colnames(data2)[1]<-"CRP"
colnames(data2)[2]<-"Status"
data<-rbind(data1, data2)
View(data)
 

得到的数据集data是包含两个变量,分别是CRP和Status。模拟的是临床病人存活者和死亡者C反应蛋白(CRP)的差异。

R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的  
image.png

接下来我们就来看看分别可以用哪些图来展示这样的数据

 带误差线的柱形图

首先是对数据集进行转换

library(dplyr)
df1<-summarise(group_by(data,Status), mean(CRP))
df2<-summarise(group_by(data,Status), sd(CRP))
df3<-left_join(df1, df2)
View(df3)
 
R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的  
image.png

画图

library(ggplot2)
ggplot(df3, aes(Status,`mean(CRP)`))+
  geom_col(aes(fill=Status),width=0.7,color="black")+
  geom_errorbar(aes(ymin = `mean(CRP)`, 
                    ymax = `mean(CRP)`+`sd(CRP)`), 
                width = 0.2)+
  scale_fill_brewer(palette = "Dark2")+
  theme(legend.position = "none")
 
R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的  
image.png
 箱线图
ggplot(data, aes(Status, CRP))+
  geom_boxplot(aes(fill=Status), width=0.6)+
  scale_fill_brewer(palette = "Dark2")+
  theme(legend.position = "none")
 

箱线图比较常用,这里我给他们上了个色。分组信息在x轴已经体现,故去除图例,避免累赘。出图如下:R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的

 小提琴图
ggplot(data, aes(Status, CRP))+
  geom_violin(aes(fill = Status))+
  geom_boxplot(width=0.1)+
  scale_fill_brewer(palette = "Dark2")+
  theme(legend.position = "none")
 

这个图实际上是小提琴图和箱线图的组合。小提琴图的优点在于能够直观地看到数据的分布情况。R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的

 直方图
ggplot(data)+
  geom_histogram(aes(CRP, fill=Status), position = "identity", alpha=0.6, color="white")+
  scale_fill_brewer(palette = "Dark2")
 

直方图同样也能看出数据的分布。但这里因为图形有重叠,我们需要用alpha参数对透明度进行设置。

R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的此外,在直方图的基础上,我们也可以添加核密度曲线:

ggplot(data, aes(CRP))+
  geom_histogram(aes(y = ..density.., fill = Status), position = "identity", alpha = 0.6, color = "white")+
  stat_density(geom = 'line', size=1, position = 'identity', aes(color = Status))+
  scale_fill_brewer(palette = "Dark2")+
  scale_color_brewer(palette = "Dark2")
 
R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的  
image.png
 散点图
ggplot(data, aes(Status, CRP))+
  geom_jitter(shape=21, size=4, color="black", aes( fill = Status), width=0.2)+
  scale_fill_brewer(palette = "Dark2") +
  theme(legend.position = "none")
 
R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的  
image.png

散点图用到的主要图形对象包括geom_jitter和geom_dotplot. geom_jitter产生的点可在一定范围内随机波动,所以也叫抖动点图;而geom_dotplot产生的点可以按照作者想要的方式(比如,居中)进行排列。

ggplot(data, aes(Status, CRP)) +
  geom_dotplot(binaxis = "y", stackdir = "center",aes(fill = Status), binwidth = 6) +
  scale_fill_brewer(palette = "Dark2") +
  theme(legend.position = "none")
 
R语言ggplot2画图比较两组连续型数据的几种方案分别是怎样的    

除了以上几种图形之外,还可以对多种图形对象进行组合,比如点图+柱状图,点图+箱线图。这样可使数据的展现更为饱满。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI