¿Las gráficas realizadas con rpy enviadas a X11 se cierran repentinamente?
Pregunta
Estoy usando RPy2 para hacer algunos gráficos.La trama aparece pero la ventana X11 desaparece inmediatamente.
Todo lo que estoy escribiendo es lo siguiente, donde CCFS es una matriz de datos
import rpy2.robjects as robjects
r = robjects.r
pca = r.princomp(CCFS)
r.plot(pca,main="Eigenvalues")
r.biplot(pca,main="biplot")
r['dev.off']() #*EDIT* the problem persists even if I remove this line.
¿Estoy dejando de incluir algo?Sé que hay algo que trazar porque princomp devuelve un ListVector que no es nulo.
Solución
Agregar
input() # for Python3
# raw_input() # for Python2
hasta el final del script para evitar que el programa termine hasta que el usuario presione ENTER.
Otros consejos
Como Zack lo señaló llamando dev.off()
en dispositivos gráficos interactivos simplemente hará que el dispositivo se cierre (y lo que muestra desaparezca).Por otro lado, la mayoría de las veces es necesario cerrar los dispositivos no interactivos antes de poder comprobar el trazado (consulte Documentación de rpy2 en dispositivos gráficos.).
Supongo que su código Python se llama como un programa/script independiente en lugar de ser parte de una sesión interactiva de Python.En otras palabras, sospecho que estás teniendo algo como python myscript.py
en un caparazón (el contenido de myscript.py
siendo su código arriba);cuando el guión termina, la R incrustada obviamente termina, llevándose consigo la trama interactiva.Probablemente esto también sea lo que Zack esté pensando.Intentar python -i myscript.py
, y luego una vez en la consola de Python import sys; sys.exit(0)
Veremos que salir de Python significa cerrar los dispositivos interactivos de R.