2014-11-24 41 views
1

我想为rgl包写一个小插曲。我想我会尝试使用knitr和markdown来制作一个HTML小插件,这样我就可以包含交互式显示以及快照。knitr和rgl:大小不一致?

Rstudio的最新版本包括pandoc并使用rmarkdown包处理输入到HTML中,但并非所有系统(包括显然R-forge)都包含pandoc,而knitr则回退到某些较早版本的markdown处理。

我在找的是我得到不同大小的报告给我的rgl设备,这取决于我使用的是pandoc路径还是较旧的路径。使用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

而这里的一个系统上处理的相同的输入文件没有潘多克。请注意,RGL数字是一半大:

http://www.stats.uwo.ca/faculty/murdoch/temp/rgl2.html

+0

你如何定义'options'?除非你已经写了'options()',那么你应该在'options $ dpi'中得到一个错误。 – rawr 2014-11-24 20:13:49

+0

options是hook_rgl的一个参数。标题是'function(before,options,envir)'。 – user2554330 2014-11-24 20:40:01

+0

那有什么关系?这不是问题,也不是我问的问题,那不是你正在使用的函数('rgl :: par3d'),这不是你如何使用'options'的方法。 – rawr 2014-11-24 20:44:52

回答

2

我发现这种差异的解释。当存在pandoc时,knitr向块钩子报告选项$ dpi是192.当它不存在时,块钩子被告知选项$ dpi是72.

我将采用的解决方法是忽略选项$ dpi,并在我的rgl钩子函数中将dpi固定为96。