2011-02-28 19 views
7

¿Es posible llamar a las funciones de trazado desde C++? Actualmente, cuando trato de hacer eso, el terminal ubuntu se congela por algún tiempo (puede ser la duración para la cual se creará la trama 3D y luego rota por 360 grados completos) y luego se descongela, sin abrir una nueva ventana. ¿Es este el comportamiento esperado o hay algo que estoy haciendo mal? ¿Cómo puedo obtener las tramas (gráficos R) para ejecutar desde C++ utilizando rinside y rcpp?Llamar R traza desde C++ usando RInside/Rcpp

Thnx

-Egon

Respuesta

5

Sí, hay un ejemplos de trabajo en el paquete RCPP. Mire el archivo functionCallback/newApiExample.r en el directorio examples/.
Es posible que deba experimentar con sleep() para 'mantener' la trama por un momento o trazar un archivo y luego mostrar el archivo. Todo depende, pero has dado pequeños detalles.

+0

estoy en su mayoría utilizando el paquete np, y utilizando la función NPPlot en R. Cuando lo intentas, con o sin sys.sleep (xx), crea un archivo "Rplots.pdf", pero nunca se abre con ningún lector de PDF. – Egon

+0

La incrustación predeterminada establece el indicador 'interactive' en FALSE. Supongo que tendrías que alterar eso. O trace un archivo png y haga que el widget lo muestre. –

+0

thnx que funciona como un encanto. – Egon

1

La variable de entorno que trata la sesión interactiva es R_INTERACTIVE_DEVICE.
Tenemos que crear un archivo llamado .Renviron en nuestro directorio personal, y luego añadir el siguiente código a ese archivo:

R_INTERACTIVE_DEVICE = X11 para sistemas basados ​​en Linux.

[email protected]:~> ls .Renviron 
.Renviron 

[email protected]:~> cat .Renviron 
R_INTERACTIVE_DEVICE = X11a 

Referencias: 1.
http://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html
2. http://stat.ethz.ch/R-manual/R-patched/library/base/html/options.html

+0

Ese es el comportamiento predeterminado. Funcionará sin el archivo también. –

+0

@DirkEddelbuettel No funcionó para mí de manera predeterminada, es por eso que pasé una hora buscando esta respuesta.! –

+0

Lo instaría a corregir las causas de los problemas, no los síntomas. –