Graphiques animés avec knitr

Je veux inclure des graphiques rgl dans mon document knitr via knitr . Voici mon MWE:

 \documentclass{article} < 

Je ne reçois pas de graphique dans mes documents sortingcotés. Toute aide sera grandement appréciée. Merci

Actualisé

Je n’arrive toujours pas à le faire fonctionner et à recevoir l’avertissement suivant:

 Warning messages: 1: In rgl.snapshot(paste(name, ".png", sep = ""), fmt = "png") : RGL: Pixmap save: unable to open file 'D:\AB\CD UAF\Test\knitr\rglAnimation\figure\rgl1.png' for writing 2: In rgl.snapshot(paste(name, ".png", sep = ""), fmt = "png") : snapshot failed 3: running command '"C:\PROGRA~2\MIKTEX~1.9\miktex\bin\x64\texi2dvi.exe" --quiet --pdf "rglAnimation.tex" --max-iterations=20 -I "C:/PROGRA~1/R/R-31~1.1/share/texmf/tex/latex" -I "C:/PROGRA~1/R/R-31~1.1/share/texmf/bibtex/bst"' had status 1 

Mon sessionInfo() est

 R version 3.1.1 (2014-07-10) Platform: x86_64-w64-mingw32/x64 (64-bit) locale: [1] LC_COLLATE=English_United States.1252 [2] LC_CTYPE=English_United States.1252 [3] LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C [5] LC_TIME=English_United States.1252 attached base packages: [1] tools stats graphics grDevices utils datasets methods [8] base other attached packages: [1] mgcv_1.8-2 nlme_3.1-117 rgl_0.93.1098 car_2.0-21 knitr_1.6.15 loaded via a namespace (and not attached): [1] evaluate_0.5.5 formatR_1.0 grid_3.1.1 highr_0.3 [5] lattice_0.20-29 MASS_7.3-34 Masortingx_1.1-4 nnet_7.3-8 [9] ssortingngr_0.6.2 

Édité

Changer fig.path = 'figure/' en fig.path = '' dans opts_chunk$set comstack le document avec des graphes png mais sans aucune animation. J’apprécierais beaucoup si certains me rgl sur la façon d’obtenir des graphes rgl animés avec fig.path = 'figure/' . Merci

J’ai un exemple basé sur le vôtre qui fonctionne en utilisant knitr sur Windows 8.1 dans RStudio 0.99.441.

Cela produit une animation de 40 images du tracé. Il utilise le hook_plot_custom pour inclure les tracés qui sont générés manuellement en animant le tracé 3D. Le code de l’animation était basé sur ceux de l’aide et de la source de play3d et movie3d . movied3d lui-même ne peut pas être utilisé car il est trop rigide dans son nom de fichier.

Je l’ai mis sur github sur https://github.com/NikNakk/testAnimateRgl/ . Le pdf est à https://github.com/NikNakk/testAnimateRgl/raw/master/rglKnitr.pdf

 \documentclass{article} \usepackage{animate} << label = setup, include = FALSE>>= library("rgl") library("car") library("knitr") knit_hooks$set(rgl = hook_plot_custom) @ \begin{document} << label=rgl1, rgl=TRUE, fig.show='animate', fig.width=5, fig.height=5, out.width='.6\\linewidth', dev='png', fig.num = 40, interval=0.1>>= scatter3d(prestige ~ income + education, data=Duncan) M <- par3d("userMatrix") par3d(windowRect = 100 + opts_current$get("dpi") * c(0, 0, opts_current$get("fig.width"), opts_current$get("fig.height"))) spinFunc <- par3dinterp(userMatrix=list(M, rotate3d(M, pi/2, 1, 0, 0), rotate3d(M, pi/2, 0, 1, 0))) for(i in 1:40) { par3d(spinFunc(i / 10)) Sys.sleep(0.05) rgl.snapshot(fig_path(".png", number = i), fmt = "png") } @ \end{document} 

Edit: Nouvelle version

Voici une autre version qui illustre l'utilisation d'options de spin3d personnalisées pour définir les parameters de spin3d plus simple. Notez qu'avec cette version, le morceau n'est qu'une seule ligne (le scatter3d ). spin3d.axis permet de définir le paramètre axis sur spin3d ; spin3d.rpm est utilisé pour définir le paramètre rpm . Le nombre d'images et l'intervalle entre les images sont définis à l'aide des fig.num standard fig.num et interval .

 \documentclass{article} \usepackage{animate} << label = setup, include = FALSE>>= library("rgl") library("car") library("knitr") hook_rgl_spin <- function(before, options, envir) { if (!before) { par3d(windowRect = 100 + options$dpi * c(0, 0, options$fig.width, options$fig.height)) if (!is.null(options$spin3d.axis)) { spin3d.axis <- options$spin3d.axis } else { spin3d.axis <- c(0, 0, 1) } if (!is.null(options$spin3d.rpm)) { spin3d.rpm <- options$spin3d.rpm } else { spin3d.rpm <- c(0, 0, 1) } spinFunc <- spin3d(axis = spin3d.axis, rpm = spin3d.rpm) for(i in 1:options$fig.num) { par3d(spinFunc(i * options$interval)) Sys.sleep(0.05) rgl.snapshot(fig_path(".png", number = i), fmt = "png") } hook_plot_custom(before, options, envir) } } knit_hooks$set(rgl = hook_rgl_spin) @ \begin{document} << label=rgl1, rgl=TRUE, fig.show='animate', fig.width=5, fig.height=5, out.width='.6\\linewidth', dev='png', fig.num = 40, interval=0.1, spin3d.axis=c(0, 0, 1), spin3d.rpm = 20>>= scatter3d(prestige ~ income + education, data=Duncan) @ \end{document}