如何在ggplot中使用facet_wrap容纳多个图

时间:2019-06-11 23:45:08

标签: r ggplot2

我能够用我的代码绘制一些确实以点阵格式绘制的图。但是,其中有多个图,准确地说是77个,每个图都被压扁并且不可读。我也尝试过使用宽度,高度,facet_wrap_paginate,但是似乎都没有给我想要的输出。每个图都是每个受试者和EVTEST的线状图,共有77个受试者。 我想在4X3或4X4的多个面板以及页面中打破剧情。我也在RTF中输出它。如果可行,我也愿意输出PDF。我该怎么办?

下面是一个虚拟数据,与我在代码中输入的格式相同。我要绘制的是此纵向数据的线图,其中X轴为VISITDY_D,Y轴为EVSTRESN。我正在通过创建串联的句柄(SUBJID_EVTEST_SITE)对图进行分组。

SUBJID  SITE    EVTEST  EVSTRESN VISITDY_D SIDE
1   AB  ABC 1.1 D00 Left
1   AB  ABC 2.1 D28 Right
1   AB  ABC 2.2 D56 Left
1   AB  ABC 2.3 D84 Left
2   AB  ABC 1.5 D00
2   AB  ABC 1.6 D28 Right


#read the data (csv file)
   donnees <- read.csv(paste0(path_data,"Sample.csv"), sep = ";",header = 
    T,stringsAsFactors = FALSE)
    Params = c("Phenotype1","Phenotype2")


#PLOTTING FUNCTION 
pf1<-function(subD,tit1){ # subD:Input data, tit1: Title for the plot

subD$SUBJID1 <- 
as.factor(paste0(subD$RANDOID,'_',subD$EVTEST,'_',subD$SITE))
p1 <- ggplot(subD,aes(x = VISITDY_D,y = EVSTRESN, color=SIDE,group=SIDE))    
geom_line(position=position_dodge(width=0.7))+
geom_point() + facet_wrap_paginate(~ SUBJID1, nrow=3,ncol=3,page=1) +
theme()
print(p1)


p1 <- ggplot(subD,aes(x = VISITDY_D,y = EVSTRESN, 
color=SIDE,group=SIDE)) +
geom_line(position=position_dodge(width=0.7))+
geom_point() + facet_wrap(~ SUBJID1) + theme()
print(p1)
}

# OUTPUT; Calling the plotting function in RTF 


oP <- /output_directory

   setwd(oP)

   rtf <- RTF(file = paste0("TEST_","individual profiles.rtf"))
   addTOC(rtf)
   addPageBreak(rtf)


 for(s in 1:length(Params)){

 dat = subset(donnees,donnees$EVTEST %in% Params[s])

 SUBJID1 <-as.factor(paste0(dat$RANDOID,'_',dat$EVTEST,'_',dat$SITE))

 tit1<-paste0(Params[s])
 addHeader(rtf,tit1,font.size = 4, TOC.level = 1)
 addPlot(rtf, plot.fun=pf1, subD= dat,tit1= tit1, width= 7, height=5.2, 
 res=250)
  }

done(rtf)

0 个答案:

没有答案