【问题标题】:knitr and rgl: inconsistent size?knitr 和 rgl:尺寸不一致?
【发布时间】:2014-11-24 20:03:29
【问题描述】:

我正在尝试为 rgl 包编写一个小插图。我想我会尝试使用 knitr 和 markdown 来生成 HTML 小插图,这样我就可以包含交互式显示以及快照。

Rstudio 的最新版本包括 pandoc 并使用 rmarkdown 包将输入处理为 HTML,但并非所有系统(显然包括 R-forge)都包括 pandoc,并且 knitr 回退到一些旧版本的 markdown 处理。

我发现,根据我使用的是 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 数字是原来的一半:

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

【问题讨论】:

  • 你如何定义options?除非你重写了options(),否则你应该得到options$dpi的错误
  • options 是 hook_rgl 的一个参数。标头是function (before, options, envir)
  • 这有什么关系?这不是问题,也不是我问的问题,这不是您使用的功能 (rgl::par3d),也不是您使用 options 的方式
  • 我引用了 knitr::hook_rgl 的一句话。 options 是该函数的参数。 (事实上​​,相关的是 knitr::hook_webgl,但他们都有那一行。我将编辑我的问题以将 hook_rgl 更改为 hook_webgl。)
  • 仅作记录,问题已报告给github.com/yihui/knitr/issues/901

标签: r knitr r-markdown rgl


【解决方案1】:

我找到了差异的解释。当 pandoc 存在时,knitr 向块挂钩报告 options$dpi 为 192。当它不存在时,块挂钩被告知 options$dpi 为 72。

我将采用的解决方法是忽略 options$dpi,并在我的 rgl 挂钩函数中将 dpi 修复为 96。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2014-07-13
    • 2011-12-05
    • 2017-01-20
    相关资源
    最近更新 更多