Tengo un código python haciendo algunos cálculos en una máquina remota, llamada A. Me conecto en A a través de ssh
desde una máquina llamada B. ¿Hay alguna manera de mostrar la figura en la máquina? ¿SEGUNDO?Matplotlib: mostrar el diagrama en una máquina remota
Respuesta
Si usa matplotlib en Mac OS X, primero debe asegurarse de utilizar uno de los servidores de la pantalla basados en X11, ya que el back-end nativo de Mac OS X no puede exportar sus gráficos. Selección de un programa de fondo se puede lograr con
import matplotlib
matplotlib.use('GTK') # Or any other X11 back-end
La lista de back-ends soportados se pueden obtener dando use()
un nombre de back-end incorrecto: matplotlib luego imprime un mensaje de error que enumera los posibles fines de la espalda.
ssh El reenvío de X11 se puede usar para mostrar tramas de matplotlib.
Te hará instalar 'pygtk' para hacer eso, y parece que es imposible o una molestia total hacerlo con Python 3. – sudo
Esto definitivamente depende de tu plataforma y administrador de paquetes. En macOS, MacPorts tiene un paquete py27-pygtk que debe hacer que la instalación sea sencilla para Python 2. – EOL
@sudo Comprobé todos los back-ends compatibles. En mi caso, los back-ends de 'TkAgg' y' GTK3Cairo' funcionaron para Python 3. 'TkAgg' parece ser más rápido. – epokhe
Claro, puede habilitar el reenvío X11. Por lo general, esto se hace pasando la opción -X
o -Y
a ssh
cuando se conecta a la computadora remota
ssh -X computerA
Tenga en cuenta que el demonio SSH en el equipo A también tendrá que ser configurado para activar el reenvío de X11. Esto se hace poniendo
X11Forwarding yes
en el archivo de configuración de un equipo sshd_config
.
Si el daemon SSH de la computadora A no tiene habilitado el reenvío X11, siempre puede hacer que Python escriba el resultado del cálculo en un archivo de texto, lo descargue a la computadora B y use Matplotlib localmente.
Lo siguiente funcionó para mí usando Mac OS X en la máquina local (máquina B) y ubuntu en el control remoto (máquina A).
Necesita el servidor X11 instalado en su máquina local para hacer esto.
Si está ejecutando una versión reciente de Mac OSX (OS X Mountain Lion o posterior), NO vendría con X11 preinstalado (consulte http://support.apple.com/kb/ht5293). Compruebe si tiene X11 abriendo el terminal Mac y ejecute el comando xterm
. Si se abre una ventana X11, ya está todo listo. Si dice que no se encontró el comando, vaya a http://xquartz.macosforge.org/landing/ e instale el servidor X11. Luego cierre la sesión y vuelva a iniciar sesión en su mac.
Después de volver a iniciar sesión, intente ejecutar de nuevo el comando xterm
. Debería abrir la ventana X11. En este punto, su variable $ DISPLAY también debe configurarse correctamente. Si no está configurado, asegúrese de haber ingresado/desconectado desde la instalación de X11 de XQuartz.
echo $DISPLAY
/tmp/launch-I9I3aI/org.macosforge.xquartz:0
Luego de su máquina local, el uso de ssh -X a distancia en un equipo remoto:
ssh -X [email protected]
A continuación, en la máquina remota:
python
>>> import matplotlib
>>> matplotlib.use('GTKAgg') #I had to use GTKAgg for this to work, GTK threw errors
>>> import matplotlib.pyplot as plt #... and now do whatever you need...
Asegúrate de que llamar matplotlib.use
ANTES importar cualquier cosa desde matplotlib
(por ej.matplotlib.pyplot
)
Otros consejos útiles para solucionar problemas sobre el uso de ssh -X: http://oroborosx.sourceforge.net/remotex.html#usessh
- 1. Eclipse - Ejecutar proyecto en una máquina remota
- 2. diagrama de dispersión en matplotlib
- 3. Cómo ejecutar el proceso en una máquina remota, en C#
- 4. No hay ventana de diagrama en matplotlib
- 5. Anotar diagrama de series temporales en Matplotlib
- 6. Acceso a TEAMCITY desde una máquina remota
- 7. diagrama de matplotlib e imshow
- 8. ¿Cómo puedo colocar una tabla en un diagrama en Matplotlib?
- 9. Cómo utilizar el volcado de MySQL desde una máquina remota
- 10. Reiniciar IIS en la máquina remota
- 11. Copie un archivo no exe en una máquina remota
- 12. cómo comprobar si sshd se ejecuta en una máquina remota
- 13. Cómo cambiar el tamaño de fuente en un diagrama matplotlib
- 14. ¿Se está ejecutando un proceso en una máquina remota?
- 15. matplotlib: diagrama de generación de vectores
- 16. Cómo extraer datos del diagrama de matplotlib
- 17. cmake "make install" a la máquina remota?
- 18. WMI para reiniciar la máquina remota
- 19. aplicación de la máquina remota abierto
- 20. ¿Cómo copio un directorio a una máquina remota usando Fabric?
- 21. Matplotlib: guardar el gráfico en numpy array
- 22. Guardar diagrama de matplotlib en escala de grises
- 23. Animación de diagrama de dispersión 3d en matplotlib
- 24. Sombreando un área entre dos puntos en un diagrama matplotlib
- 25. Agregar una línea arbitraria a un diagrama de matplotlib en el cuaderno ipython
- 26. Defina el tamaño de una cuadrícula en un diagrama usando Matplotlib
- 27. Múltiples comandos en la máquina remota usando script de shell
- 28. C# Servicio de estado en la máquina remota
- 29. Instalar un servicio de Windows en una máquina remota usando el nombre de usuario dado
- 30. Diagrama de dispersión 3D de Matplotlib con gradiente de color
relacionadas: http://stackoverflow.com/questions/2801882/generating-a-png-with-matplotlib-when-display-is- undefined? lq = 1 –