set.seed(1) meanse <- lapply(1:7,function(i)cbind(mean=rnorm(10,0,2),se=rexp(10))) names <- sapply(1:10,function(i)paste0(sample(LETTERS,10),collapse ="")) tab <-list(meanse=meanse,names=names) class(tab)<-"seTable" plot.seTable <-function(tab,layoutMat=matrix(1:length(tab$meanse),ncol =1), alpha=0.05,leftmargin=7, col="black"){ q <- qnorm(1-alpha/2) oldpar <- graphics::par(no.readonly =TRUE) N <- length(tab$meanse) ran <- range(sapply(tab$meanse,function(x)c(x[,1]-q*x[,2],x[,1]+q*x[,2]))) graphics::par(mar = c(1.5, leftmargin,1.5,0), oma = rep(1,4)) graphics::layout(mat = layoutMat, respect =FALSE)for(i in1:N){ tmp <- tab$meanse[[i]] n <- nrow(tmp) plot.default(tmp[,1],1:n,xlim = ran,pch=16, xaxt="n", yaxt="n", xlab ="", ylab ="", main = paste("topic",i), frame.plot =FALSE) segments(tmp[,1]-q*tmp[,2],1:n,tmp[,1]+q*tmp[,2],1:n) axis(side=2,at=1:n,labels = tab$names,las=2,lwd=0) abline(v=0,lty=2)if(i %% nrow(layoutMat)==0| i==N){ axis(side=1)}} graphics::par(oldpar)} plot(tab,matrix(1:8,ncol=2))
↧
geom_pointrangeみたいなやつを並べて書きたい
↧