R 格子图 - 添加外边距,向边距添加文本并向下移动主标题

问题描述

几年前,我发布了一个关于如何使用建议的解决方here 向 R 格图添加标题的问题。但是,我想知道现在是否有一种方法可以使用格子添加外边距,然后将文本添加到边距。下面是一些示例代码,我希望在输出绘图页面的顶部显示标题“虹膜直方图”。我还想知道是否有办法将每个图上的主标题向下移动到更接近直方图的位置?

tmp <- "Iris_Hsit.jpg"

jpeg(filename = tmp,width = 20,height = 20,units = "cm",pointsize = 5,bg = "white",res = 600,quality = 75)

pdd <-2
lattice.options(
  layout.heights = list(bottom.padding =list(x = pdd),top.padding = list(x = pdd)),layout.widths = list(left.padding = list(x = pdd),right.padding = list(x = pdd))
)

for(i in 1:4){  
  tmp <- histogram(~iris[,i],data = iris,aspect = 1,main = list(names(iris)[i],cex = 2),xlab = list(names(iris)[i]))
  if(i <= 2){
   plot(tmp,split = c(1,i,2,2),more = TRUE)
  }else{
    j <- i - 2  
    plot(tmp,split = c(2,j,more = TRUE)
  }
}

dev.off()

解决方法

使用来自latticeExtra的c.trellis,我们可以做到这一点:

library(latticeExtra)

do.call(c,lapply(iris[1:4],histogram,main = "Iris",xlab = ""))

给予:

screenshot

或 xyplot.list 也使用latticeExtra 并给出相同的输出:

xyplot.list(iris[1:4],FUN = histogram,xlab = "",y.same = FALSE)

也可以使用普通格子本身来做到这一点:

histogram(~ values | ind,stack(iris[1:4]),xlab = "")