Graphics 晶格问题:晶格对象来自JAG,但无法设置设备

Graphics 晶格问题:晶格对象来自JAG,但无法设置设备,graphics,r,lattice,Graphics,R,Lattice,我用R中的runjags运行了JAGS,我得到了一个巨大的列表,为这个例子命名了结果 每当我访问results$density时,默认石英设备中会弹出两个晶格图,每个参数对应一个 我需要将它们与parmfrow=c2、1或类似的方法结合起来,并将它们发送到pdf设备 我试过的都没用。有什么想法吗 我尝试了dev.print、带dev.off的pdf等,但没有成功。例如,对于run.jags中包含的示例,请使用 sink("results_str.txt") str(results$density

我用R中的runjags运行了JAGS,我得到了一个巨大的列表,为这个例子命名了结果

每当我访问results$density时,默认石英设备中会弹出两个晶格图,每个参数对应一个

我需要将它们与parmfrow=c2、1或类似的方法结合起来,并将它们发送到pdf设备

我试过的都没用。有什么想法吗


我尝试了dev.print、带dev.off的pdf等,但没有成功。

例如,对于run.jags中包含的示例,请使用

sink("results_str.txt")
str(results$density)
sink()
然后您将看到名为layout的组件。每个变量的两个图的布局可以使用

results$density$m$layout <- c(1,2)
print(results$density$m)
另一种方法是使用栅格视口:

library("grid")
results$density$m$layout <- c(2,1)
results$density$c$layout <- c(2,1)
class(results$density$m) <- "trellis"
class(results$density$c) <- "trellis"
layout <- grid.layout(2, 1, heights=unit(c(1, 1), c("null", "null")))
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
print(results$density$m, newpage=FALSE)
popViewport()
pushViewport(viewport(layout.pos.row=2))
print(results$density$c, newpage=FALSE)
popViewport()
popViewport()

例如,对于run.jags中包含的示例,请使用

sink("results_str.txt")
str(results$density)
sink()
然后您将看到名为layout的组件。每个变量的两个图的布局可以使用

results$density$m$layout <- c(1,2)
print(results$density$m)
另一种方法是使用栅格视口:

library("grid")
results$density$m$layout <- c(2,1)
results$density$c$layout <- c(2,1)
class(results$density$m) <- "trellis"
class(results$density$c) <- "trellis"
layout <- grid.layout(2, 1, heights=unit(c(1, 1), c("null", "null")))
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
print(results$density$m, newpage=FALSE)
popViewport()
pushViewport(viewport(layout.pos.row=2))
print(results$density$c, newpage=FALSE)
popViewport()
popViewport()

组合图的最简单方法是使用results$mcmc中存储的结果:

# prepare data, see source code of "run.jags"
thinned.mcmc <- combine.mcmc(list(results$mcmc),
                             collapse.chains=FALSE,
                             return.samples=1000)
print(densityplot(thinned.mcmc[,c(1,2)], layout=c(1,2),
                  ylab="Density", xlab="Value"))

组合图的最简单方法是使用results$mcmc中存储的结果:

# prepare data, see source code of "run.jags"
thinned.mcmc <- combine.mcmc(list(results$mcmc),
                             collapse.chains=FALSE,
                             return.samples=1000)
print(densityplot(thinned.mcmc[,c(1,2)], layout=c(1,2),
                  ylab="Density", xlab="Value"))

这里有一种通过操纵网格结构来丢弃V1面板的方法:

p1 <- results$density$c
p2 <- results$density$m

p1$layout <- c(1,1)
p1$index.cond[[1]] <- 1   # remove second index
p1$condlevels[[1]] <- "c"   # remove "V1"
class(p1) <- "trellis"   # overwrite class "plotindpages"

p2$layout <- c(1,1)
p2$index.cond[[1]] <- 1   # remove second index
p2$condlevels[[1]] <- "m"   # remove "V1"
class(p2) <- "trellis"   # overwrite class "plotindpages"

library(grid)
layout <- grid.layout(2, 1, heights=unit(c(1, 1), c("null", "null")))
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
print(p1, newpage=FALSE)
popViewport()
pushViewport(viewport(layout.pos.row=2))
print(p2, newpage=FALSE)
popViewport()
popViewport()

这里有一种通过操纵网格结构来丢弃V1面板的方法:

p1 <- results$density$c
p2 <- results$density$m

p1$layout <- c(1,1)
p1$index.cond[[1]] <- 1   # remove second index
p1$condlevels[[1]] <- "c"   # remove "V1"
class(p1) <- "trellis"   # overwrite class "plotindpages"

p2$layout <- c(1,1)
p2$index.cond[[1]] <- 1   # remove second index
p2$condlevels[[1]] <- "m"   # remove "V1"
class(p2) <- "trellis"   # overwrite class "plotindpages"

library(grid)
layout <- grid.layout(2, 1, heights=unit(c(1, 1), c("null", "null")))
grid.newpage()
pushViewport(viewport(layout=layout))
pushViewport(viewport(layout.pos.row=1))
print(p1, newpage=FALSE)
popViewport()
pushViewport(viewport(layout.pos.row=2))
print(p2, newpage=FALSE)
popViewport()
popViewport()

这是可行的-但我不想要V1和V2图-它们是冗余的。我怎样才能摆脱这些?这是可行的-但我不想要V1和V2绘图-它们是多余的。我怎样才能摆脱这些?干净有效!谢谢我仍然很想知道如何在你的另一个例子中去掉V1和V2的绘图。干净有效!谢谢我仍然想知道如何在你的另一个例子中去掉那些V1和V2图。