r - 在 R 和 knitr 中,如何绘制 INLA 结果?

标签 r graphics latex knitr

我想加入一些 INLA在我的 knitr 文档和打印图中的代码:

使用一个简单的例子

\documentclass{article}

\begin{document}

<<c1>>=
library("INLA")

n = 100
z = runif(n)
eta = 1 + 0.1*z
N = 20

p = exp(eta)/(1+exp(eta))
y = rbinom(n,  size = N, prob = p)
r = inla(y ~ 1 + z,  
         data = data.frame(y, z), 
         family = "binomial", 
         Ntrials = rep(N, n),
        control.family = list(link = "logit"), 
        control.predictor = list(compute=TRUE)
        )
@

<<c2>>=
plot(r, single=TRUE)
@

\end{document}

当我在 RStudio 中以交互方式运行此代码时,一切正常,并且我得到了一系列图。然而,在编织文件之后 - 它们都没有被包含在内。

我该如何解决?

更新 1 我在 Google groups 上发布了要求软件包开发人员澄清的问题.

更新 2 来自 INLA 开发人员小组的 Havard Rue 在 Google Groups 上发布了 Sweave 解决方案。诀窍是:
<<results=tex, echo=FALSE>>=
figs = plot(r, single=TRUE, postscript=TRUE, prefix="Sweave/ex1/figure-")

cat("\\begin{figure}[tbp]\n")
cat("\n")
cat("\\centering\n")

for(i in 1:length(figs)) {
    cat("\\includegraphics[width=7cm,height=7cm,angle=-90]{",
    gsub("[.]eps$","",figs[i]), "}\n", sep="")
}

cat("\\caption{XXX}\n")
cat("\\label{fig:11}\n")
cat("\\end{figure}\n")
@

这似乎确实可以完成这项工作。图形在指定目录中创建,然后放置在 pdf 输出中。然而,自 knitr 以来,放置和调整大小需要一些修补。控件似乎不再起作用。

最佳答案

INLA绘图时似乎在做一些非标准的事情。如果不在 RStudio 中运行,它会在绘图时打开一个新的绘图窗口(设备)。我认为这意味着 knitr没有看到这些图,因为它们不在 knitr 的设备上正在使用/监控。

也许你可以通过添加一个块来欺骗 INLA

<<>>=
op <- options(device="RStudioGD")
@

在 knitr 文件的开头和
<<>>=
options(op)
@

在文件末尾(将默认设备重置为适当的内容)。

这是未经测试的,因为我没有 INLA安装。

可能需要修改 INLA (特别是 inla.dev.new )不打开新设备。一种可能有效的方法是
noop <- function(...) NULL
assignInNamespace("inla.dev.new", noop, ns="INLA")

这也是未经测试的,可能会破坏 INLA 的其他部分.

关于r - 在 R 和 knitr 中,如何绘制 INLA 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534751/

相关文章:

latex - knitr/rmarkdown/ latex : How to cross-reference figures and tables in 2 different pdf files?

r - 基于向量键合并数据帧

c# - 绘制的矩形仅出现在我的 userControl 的最后一个实例上

java - 在 paint() 中调用 repaint() 会导致无限递归吗?

r - 如何控制 KnitR 中人物的标题位置?

latex - LaTeX 表格标题中的特殊字符

Selenium |获取 youtube 页面源

MLB 球队按年获胜的 R 多线图

r - 无法从维基百科中抓取表格

java - java 如何知道鼠标点击是否在图形图像上