我正在尝试为rgl包编写一个插图。我想我会尝试使用knitr和markdown来制作HTML小插图,这样我就可以包含交互式显示和快照。
Rstudio的最新版本包括pandoc并使用rmarkdown软件包将输入处理为HTML,但并非所有系统(包括显然是R-forge)都包含pandoc,而knitr则会回退到那些旧版本的markdown处理。 / p>
我发现,根据我使用的是pandoc路径还是较旧的路径,我会向rgl设备报告不同的大小。使用Yihui的knitr::hook_webgl
函数作为钩子,图像的大小应该是它们应该的两倍。使用行
rgl::par3d(windowRect = 100 + options$dpi * c(0, 0, options$fig.width,
options$fig.height))
这里,options
是传递给函数的参数之一。它包含块选项。
要获得正确的大小,我需要将dpi除以2.另一方面,使用与旧驱动程序相同的代码可以正常工作。
这是knitr中的错误,还是我在某个地方错过了一些选项?
这是在RStudio中使用pandoc生成的示例,修改了hook_rgl以将大小除以2.数字是我想要的大小:
http://www.stats.uwo.ca/faculty/murdoch/temp/rgl.html
这是在没有pandoc的系统上处理的相同输入文件。请注意,rgl数字是一半大:
答案 0 :(得分:2)
我找到了差异的解释。当pandoc存在时,knitr向块钩子报告选项$ dpi是192.当它不存在时,块钩子被告知选项$ dpi是72。
我将采用的解决方法是忽略选项$ dpi,并在我的rgl钩子函数中将dpi修复为96.