【问题标题】:Multiple lattice plots with gridExtra带有 gridExtra 的多个格子图
【发布时间】:2013-08-27 12:06:03
【问题描述】:

有一种非常方便的绘制多个图形的方法,那就是使用 gridExtra - grid.arrange:

grid.arrange(plot1,plot2,plot3,plot4,plot5,plot6,plot7,plot8,plot9, ncol=3)

上述命令在一个窗口中绘制 3x3 图形。

现在,我正在使用自己的格子设置来绘制独特的线条等,通过

trellis.par.set(my.setup)

但是,使用 grid.arrange 命令绘制多个绘图不会传递设置,因为输出绘图是默认颜色。

所以问题是如何将my.setup 传递到 grid.arrange 上,或者如何轻松地一次绘制多个图形以获取网格。

编辑:可重现的示例:

Data <- data.frame(Col1=rnorm(10,0,1),Col2=rexp(10,2),Col3=rnorm(10,2,2),Col4=runif(10,0,2), 
       Time=seq(1,10,1))

trellis.par.set(col.whitebg()) 
newSet <- col.whitebg() 
newSet$superpose.symbol$col <- c("blue3","orange2","gray1","tomato3")
newSet$superpose.symbol$pch <- 1
newSet$superpose.symbol$cex <- 1
newSet$superpose.line$col <- c("blue3","orange2","gray1","tomato3")
trellis.par.set(newSet)

Plot1 <- xyplot(Col1+Col2~Time, Data, type="spline")
Plot2 <- xyplot(Col2+Col3~Time, Data, type="spline")
Plot3 <- xyplot(Col1+Col3~Time, Data, type="spline")
Plot4 <- xyplot(Col3+Col4~Time, Data, type="spline")

grid.arrange(Plot1,Plot2,Plot3,Plot4, ncol=2)

【问题讨论】:

  • my.setup 是当前trellis.par 的环境中构建绘图。
  • @DWin。抱歉,你能说得更具体点吗?
  • lattice 具有在一个页面(甚至多个页面)中排列多个绘图的内置功能,这可能是一种更好的方法。 ?lattice:::print.trellis
  • 我知道 print(plot1,pos,split)。我发现每次我想要任意(即 2x2、3x3、3x4 等)多图时都找到位置是有问题的。
  • 请发布一个最小的独立的可重现示例

标签: r lattice


【解决方案1】:

我想这与 plot.trellis 方法在包裹在 gridExtra::drawDetails.lattice 时找不到全局主题设置有关。我不明白这些格子选项,但据我记得你也可以在情节级别明确指定它们,

pl = list(Plot1, Plot2, Plot3, Plot4)
# do.call(grid.arrange, c(pl, nrow=1))
do.call(grid.arrange, c(lapply(pl, update, par.settings=newSet), list(nrow=1)))

【讨论】:

  • 顺便说一句。如果我有 3 个图并且我希望它们水平而不是垂直,这会是什么样子?在上面的例子中,提供 pl=list(Plot1,Plot2,Plot3),绘图是垂直的(彼此下方)。谢谢。
  • 但这不会使用我当前的设置-newSet,线条是默认颜色。
  • 实际上,命令: grid.arrange(Plot1,Plot2,Plot3, ncol=3) 打印成 pdf 时(但在 R 窗口中显示默认设置)使用 newSet 指令,因此我的问题解决了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多