Getting ggvis :: export_png () works

goal

Export the ggvis shape as a PNG file (for inclusion in a .Rmd document).

Problem

I know nothing about Node.js, except that it is great, and I need to know more.

Reached:

 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) 

Customization

Platform

  • OS X Mavericks (10.9.5)
  • RStudio (0.98.945)
  • Used devtools::install_github("hadley/ggvis") to install ggvis (0.3.0.9001) and dependencies
  • Cloned https://github.com/trifacta/vega to /usr/local/src/vega
  • Symlinked ./bin/vg2png -> /usr/local/src/vega/bin/vg2png

sessionInfo ()

 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 
+6
source share
1 answer

There are several moving goals that need to be fixed in order to get ggvis and export_ tools.

The Vega 2+ series does not accept json ggvis commands for the vg2XXX commands that are used for export, so vega must be bound to version 1.5.4, which is the latest in the v1 series. The problem with this is nodejs 4.x + wont install vega@1.5.4 and requires new versions of vega. Fortunately, we can use the node version manager (nvm) to bind the node version to node 0.12.7, which allows us to install vega.

What is PITA, huh? If you do this in a scriptable container (like using a Rocker container, it's much easier. I used the Rstudio setting which includes this docker file containing these corresponding lines ...

 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 vega@1.5.4... 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 vega@1.5.4 ;"; \ ln -s -t ~/.local/bin ~/node_modules/vega/bin/* 
0
source

Source: https://habr.com/ru/post/975727/


All Articles