【问题标题】:Include rgl interactive plot in .Rnw (pdf output)在 .Rnw 中包含 rgl 交互式绘图(pdf 输出)
【发布时间】:2017-03-19 08:19:20
【问题描述】:

问题描述

我想在从 .Rnw 文件编织的 .pdf 中包含一个交互式(旋转)rgl 3-d 散点图。我知道有一个包含 rgl 的钩子,但也许这仅适用于 html 输出。我似乎无法包含情节以使其旋转。这是一个最小的例子。情节出现了,但有线而不是点,并且没有可用的旋转。

问题

  1. 是否可以在 pdf 中包含交互式 rgl?
  2. 如果是这样...我怎样才能用 knitr 做到这一点?我做错了什么?

MWE

\documentclass{article}

\begin{document}

<<setup, include=FALSE, cache=FALSE>>=
library(knitr)
library(rgl) 
knit_hooks$set(rgl = hook_rgl)
@

<<fancy-rgl, rgl=TRUE>>=
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
# open3d()
plot3d(x, y, z, col = 'black')
@


\end{document}

我在 pdf 中看到的内容:

【问题讨论】:

  • 我可能错了,但我的印象是PDF文件只能呈现静态内容。
  • 我希望这不是真的。您可以包含动画。钩子示例使用了这个非常示例:yihui.name/knitr/hooks 这也表明可能会发生交互式 rgl,但这也不会呈现为动态:github.com/yihui/knitr-examples/blob/master/092-latex-rgl.Rnw
  • 这表示它只是一张图片:if we want to insert 3D snapshots produced in rgl from yihui.name/knitr/hooks
  • 我不确定链接的knitr 示例应该如何工作,但是当我尝试它们时,它们没有在 PDF 文档中生成交互式绘图。我很确定这只是一般 PDF 格式的限制,不一定特定于 knitrrglThis thread 与您的问题有些相关。
  • 只有 Adob​​e PDF Reader 支持动画。动画是由 LaTeX 包 animate 创建的。我记得有支持交互式3D绘图的LaTeX包,但我不知道rgl是否可以与这些包连接。

标签: r knitr rgl rnw


【解决方案1】:

这是可能的,但只是勉强。您需要安装 Asymptote,并使用rgl::writeASY() 为其编写程序。然后将该程序包含在您的文档中,运行 LaTeX,然后是 Asymptote,然后再次运行 LaTeX。

这里有在 LaTeX 中包含 Asymptote 的示例:http://asymptote.sourceforge.net/doc/LaTeX-usage.html#LaTeX-usage

结果有点令人失望。

我的建议是放弃 PDF。 HTML5 是一个更好的输出目标; rgl 做得很好(使用rglwidget())为网页生成输出。确实不太可能在改进 PDF 输出方面付出任何努力,而解决 HTML 支持方面的剩余差距是当务之急。

【讨论】:

  • 谢谢。我同意pdf。这是一篇论文,我需要对格式进行极端控制,而我们现在拥有的许多很酷的 rmarkdown 东西在我 2 年前开始时都是新的或缺失的。
  • @TylerRinker 您可以在 PDF 中插入静态屏幕截图,并链接到您在 Github 页面或 Dropbox 等地方部署的交互式 HTML 版本。
  • 如果有人将此示例作为另一个答案,那将非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 2012-08-22
  • 1970-01-01
  • 2020-11-28
相关资源
最近更新 更多