我有来自三个不同研究的数据,我使用ggplot2
' s geom_tile
绘图。列为category
- 将在y轴上绘制,x
- x轴和score
- 将对切片进行颜色编码。 study
列指定了研究。
以下是数据:
library(dplyr)
set.seed(1)
df <- data.frame(category=strsplit("Peptide,Amino Acid,Nucleotide,Xenobiotics,Carbohydrate,Cofactors and Vitamins,Lipid,Lysophospholipid,Gamma-glutamyl Amino Acid,Leucine Isoleucine and Valine Metabolism,Fatty Acid Dicarboxylate,Long Chain Fatty Acid,Sterol,Secondary Bile Acid Metabolism,Polyunsaturated Fatty Acid (n3 and n6),Other Tentative Assignments,Energy,Cofactors And Vitamins,Sulfur Metabolism,Amino Acids,Carnitine And Fatty Acid Metabolsim,Glycerophospholipid Biosynthesis,Stimulating/Exogenous Compounds,Carboxylic Acid,Bile Acids,Gamma-Glutamyls,Arachidonate Metabolism,Gsh Homeostasis,Medium Chain Fatty Acid,Urea cycle; Arginine and Proline Metabolism",split=",")[[1]],
x=rep("x",30),score=log10(runif(30,0,1)),study=c(rep("study1",12),rep("study2",10),rep("study3",8)),stringsAsFactors = F)
我使用geom_tile
分别绘制每项研究,但将width
中的geom_tile
参数定义为所有三个图中的0.5:
library(ggplot2)
plot1 <- ggplot(data=df %>% dplyr::filter(study == "study1"),aes(x=x,y=category))+geom_tile(aes(fill=score),width=0.5)+
scale_fill_gradient2(low='darkblue',mid='white',high='darkred')+
theme_minimal()+xlab("")+labs(fill="score")+ylab("Pathway")+
theme(axis.text.x=element_blank(),plot.title=element_text(size=16,hjust=0,face="bold"),axis.title=element_text(size=18,face="bold"),axis.text=element_text(size=16),legend.text=element_text(size=16),legend.title=element_text(size=16,face="bold"))+ggtitle("A.")
plot2 <- ggplot(data=df %>% dplyr::filter(study == "study2"),aes(x=x,y=category))+geom_tile(aes(fill=score),width=0.5)+
scale_fill_gradient2(low='darkblue',mid='white',high='darkred')+
theme_minimal()+xlab("")+labs(fill="score")+ylab("Pathway")+
theme(axis.text.x=element_blank(),plot.title=element_text(size=16,hjust=0,face="bold"),axis.title=element_text(size=18,face="bold"),axis.text=element_text(size=16),legend.text=element_text(size=16),legend.title=element_text(size=16,face="bold"))+ggtitle("B.")
plot3 <- ggplot(data=df %>% dplyr::filter(study == "study3"),aes(x=x,y=category))+geom_tile(aes(fill=score),width=0.5)+
scale_fill_gradient2(low='darkblue',mid='white',high='darkred')+
theme_minimal()+xlab("")+labs(fill="score")+ylab("Pathway")+
theme(axis.text.x=element_blank(),plot.title=element_text(size=16,hjust=0,face="bold"),axis.title=element_text(size=18,face="bold"),axis.text=element_text(size=16),legend.text=element_text(size=16),legend.title=element_text(size=16,face="bold"))+ggtitle("C.")
然后,I&#39; M尝试使用gridExtra
&#39把他们在一个单一的数字; S arrangeGrob
函数,其中我希望他们垂直对准但没有按&#39;吨似乎工作:
library(gridExtra)
combined.plot <- gridExtra::arrangeGrob(grobs=list(plot1,plot2,plot3),ncol=1,nrow=3)
因为这是我得到的:
所以我的问题是如何创建一个图形,其中三个图形具有完全相同的图块宽度并垂直对齐(即,图块是对齐的而不是长类别文本)。
答案 0 :(得分:3)