problemas de rede: objetos de treliça vindo JAGS, mas o dispositivo não pode ser definido

StackOverflow https://stackoverflow.com/questions/1641488

  •  08-07-2019
  •  | 
  •  

Pergunta

Eu corri JAGS com runjags em R e eu tenho uma lista de volta gigante (resultados nomeados para este exemplo).

Sempre que eu acessar results$density, dois lattice plots (uma para cada parâmetro) aparecer no dispositivo de quartzo padrão.

Eu preciso combiná-las com par(mfrow=c(2, 1)) ou com uma abordagem semelhante, e enviá-los para o pdf device.

Nada eu tentei está funcionando. Alguma idéia?

Eu tentei dev.print, pdf() com dev.off(), etc. sem sorte.

Foi útil?

Solução

Aqui está uma maneira de acabar com os painéis "V1" pela manipulação da estrutura Trellis:

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()

pote de c.trellis () resultar http://img142.imageshack.us /img142/3272/ctrellisa.png

Outras dicas

A maneira mais fácil de combinar as parcelas é usar os resultados armazenados no resultado de $ 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"))

Por exemplo, para o exemplo incluído de run.jags, verificar a estrutura da lista usando

sink("results_str.txt")
str(results$density)
sink()

Em seguida, você verá componentes nomeados Layout . O layout para os dois lotes de cada variável pode ser definida usando

results$density$m$layout <- c(1,2)
print(results$density$m)

As parcelas para diferentes parâmetros podem ser combinados usando o método c.trellis do pacote latticeExtra.

class(results$density$m) <- "trellis"   # overwrite class "plotindpages"
class(results$density$c) <- "trellis"   # overwrite class "plotindpages"
library("latticeExtra")
update(c(results$density$m, results$density$c), layout=c(2,2))

saída do c.trellis http://img88.imageshack.us/img88/ 6481 / ctrellis.png

Outra abordagem é usar viewports grid:

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()

saída grade http://img88.imageshack.us/img88/5967/grida .png

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top