在带有 knitr 的 Rnw 中使用 ggvis
Posted
技术标签:
【中文标题】在带有 knitr 的 Rnw 中使用 ggvis【英文标题】:Using ggvis in Rnw with knitr 【发布时间】:2014-11-28 17:09:03 【问题描述】:我想知道我是否可以将 .Rnw 中的 ggvis 与 knitr 一起使用。我在RStudio Version 0.98.1091
中尝试了以下代码。但它不起作用。
\documentclassbook
\usepackage[T1]fontenc
\usepackagefloat
\usepackagebooktabs
\usepackagedcolumn
\usepackagegeometry
\geometryverbose,tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm
\begindocument
\chapterTest
\beginfigure[H]
<< label = Plot1, fig.lp = "Plot1", fig.cap = "Test Plot" >>=
library(ggvis)
p <- mtcars %>% ggvis(x = ~wt, y = ~mpg) %>% layer_points()
print(p) # Commenting this line will compile the document
@
\endfigure
\enddocument
它会抛出以下错误:
LaTeX errors:
! Missing $ inserted.
<inserted text>
$
l.70 \endkframe<!--html_
preserve--><div id="plot_id298740869-container" cl...
! Please use \mathaccent for accents in math mode.
已编辑
注释print(p)
行将编译该文档而不会出现任何错误。
如果有像ggsave()
这样的命令来保存ggvis
绘图就足够了。
【问题讨论】:
【参考方案1】:是的。
export_png
函数可以从 ggvis
对象创建 PNG 图像。
它使用node
javascript 解释器,而node
需要安装vega
包。
在 linux 命令行中,我可以这样做:
sudo npm -g install vega
使用节点包管理器全局安装vega
包。我不知道你是如何在 Windows 或 Mac 机器上做到这一点的。
完成后,您可以:
\documentclassbook
\usepackage[T1]fontenc
\usepackagefloat
\usepackagebooktabs
\usepackagedcolumn
\usepackagegeometry
\geometryverbose,tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm
\begindocument
\chapterTest
\beginfigure[H]
<< label = Plot1, fig.lp = "Plot1", fig.cap = "Test Plot" >>=
library(ggvis)
p <- mtcars %>% ggvis(x = ~wt, y = ~mpg) %>% layer_points()
export_png(p,"Plot1.png")
@
\includegraphics[width=0.8\textwidth]Plot1.png
\endfigure
\enddocument
做:knit2pdf("gg.Rnw")
然后得到:
请注意,您必须手动添加标题和标签。或许可以说服亿辉将这个更好地融入到knitr中,或者可能有一种使用knitr hooks的方法。无论如何,概念证明了......
【讨论】:
我喜欢ggplot2
并且经常使用。但是ggplot2
中没有某些功能,尤其是在ggvis
中可用的顶部x 轴。有没有办法使用命令以pdf
或png
格式保存ggvis
绘图?谢谢
您必须控制浏览器才能通过浏览器的“打印”功能打开生成的 HTML 并保存 PDF。可行但不简单...
请查看我的编辑。如果有像ggsave()
这样的命令来保存ggvis
地块就足够了。
如果你安装了一些其他的东西,你也许可以通过 ggvis::export_png 创建一个 PNG - 一旦我得到这个工作,我可能会为你编辑我的答案......
感谢@Spacedman 的帮助。我在等你的答复。再次感谢。以上是关于在带有 knitr 的 Rnw 中使用 ggvis的主要内容,如果未能解决你的问题,请参考以下文章
R Markdown、Knitr、Pandoc和Bookdown之间的关系