Goal
导出一个ggvis
图为 PNG 文件(用于包含在 .Rmd 文档中)。
Problem
我对 Node.js 基本上一无所知,除了它很棒而且我应该了解更多。
我了解到:
library(ggvis)
mtcars %>% ggvis(~mpg, ~wt) %>% export_png()
Writing to file plot.png
Guessing layer_points()
module.js:340
throw err;
^
Error: Cannot find module 'd3'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/usr/local/src/vega/index.js:11:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
Setup
Platform
- OS X 小牛 (10.9.5)
- RStudio (0.98.945)
- Used
devtools::install_github("hadley/ggvis")
安装ggvis
(0.3.0.9001) 和依赖项
- Cloned
https://github.com/trifacta/vega
to /usr/local/src/vega
- 符号链接
./bin/vg2png -> /usr/local/src/vega/bin/vg2png
会话信息()
sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] graphics grDevices utils datasets stats methods base
other attached packages:
[1] knitr_1.6 pander_0.3.8 ggvis_0.3.0.9001 lubridate_1.3.3 dplyr_0.2.0.9001 plyr_1.8.1 stringr_0.6.2 ggplot2_1.0.0 devtools_1.5
loaded via a namespace (and not attached):
[1] assertthat_0.1 bitops_1.0-6 caTools_1.17 colorspace_1.2-4 DBI_0.3.0 digest_0.6.4 evaluate_0.5.5 formatR_0.10 grid_3.1.0
[10] gtable_0.1.2 htmltools_0.2.4 httpuv_1.3.0 httr_0.5.0.9000 jsonlite_0.9.11 lazyeval_0.1.1 magrittr_1.0.1 MASS_7.3-33 memoise_0.2.1
[19] munsell_0.4.2 parallel_3.1.0 proto_0.3-10 Rcpp_0.11.2 RCurl_1.95-4.3 reshape2_1.4 RJSONIO_1.3-0 scales_0.2.4 shiny_0.10.1
[28] tools_3.1.0 whisker_0.3-2 xtable_1.7-3
为了让 ggvis 和 export_ 工具正常工作,需要确定一些移动目标。
Vega 2+ 系列版本不接受 ggvis 为 vg2XXX 命令生成的 json,这些命令用于导出,因此 vega 需要固定到 v1.5.4,这是 v1 系列的最后一个。问题是 Nodejs 4.x+ 无法安装[电子邮件受保护]并需要较新的 Vega 版本。值得庆幸的是我们可以使用节点版本管理器(nvm) 将节点版本固定到节点 0.12.7,这允许我们安装 vega。
多棒的皮塔饼啊,是吗?如果您在可编写脚本的容器中执行此操作(例如使用Rocker容器)环境要容易得多。我一直在使用 Rstudio 设置,其中包括thisdockerfile 包含这些相关行...
RUN \
# Vega 2 doesn't accept the json ggvis generates when trying to use vg2XXX
# commands so vega needs to be pinned. nodejs 4.x wont install [email protected]...
mkdir .local/lib/nvm; \
ln -s .local/lib/nvm .nvm; \
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash; \
. .nvm/nvm.sh; \
sudo bash -c ". .nvm/nvm.sh;\
nvm install 0.12.7;\
nvm alias default 0.12.7;\
npm install --silent [email protected];"; \
ln -s -t ~/.local/bin ~/node_modules/vega/bin/*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)