¿Cómo guardar una figura de forma remota con pylab? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de generar una figura en un equipo remoto con el comando pylab.savefig. Pero tengo tal error:

Unable to access the X Display, is $DISPLAY set properly?

¿Cómo puedo guardar la figura correctamente?

Author: gerry, 2011-01-16

2 answers

Por defecto, matplotlib usará algo así como el motor TkAgg. Esto requiere que se ejecute un servidor X.

Si bien puede usar el reenvío X, habrá un retraso notable cuando matplotlib intente conectarse con el servidor X remoto. Si no necesitas interactuar con la trama, a menudo es mejor acelerar las cosas evitando una conexión X por completo.

Si desea hacer una gráfica sin necesidad de un servidor X en absoluto, utilice el Agg backend en su lugar.

Por ejemplo, haga algo como esto:

import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png')

Si desea que este sea el comportamiento predeterminado, puede modificar su archivo matplotlibrc para usar el motor Agg por defecto.

Ver este artículo para más información.

 128
Author: Joe Kington,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-27 08:54:55

Umm, establecer la variable de VISUALIZACIÓN correctamente?

Los gráficos en la red que utilizan X11 funcionan en el equipo cliente (remoto) que tiene una variable de entorno de VISUALIZACIÓN que indica dónde dibujar los gráficos. Normalmente sería algo así como miescritorio.ejemplo.com:0.0 - entonces cuando una X11 programa intenta dibujar algo, se vuelve zumbando a través de la red mydesktop.example.com, que es la máquina que usted está sentado en frente de (el servidor X) y hasta que salga.

Ahora, si la máquina en delante de usted está Windows, entonces usted necesitará conseguir un servidor de X de algún lugar-cygwin / X11 o commercial eXceed hará muy bien.

También debe asegurarse de que la seguridad esté controlada; no puede tener a nadie escribiendo en su pantalla a través de la red.

¿Cómo se conecta a la máquina remota? Porque si usted va de una caja de Linux a otra caja de Linux con ssh entonces la solución simple es probablemente 'Use ssh-X foo.example.com' para conectar-esto canaliza la conexión X11 a través de un toma local.

Entonces, si ssh-X no es la respuesta, ¿podemos tener más información sobre los sistemas operativos involucrados, por favor?

 1
Author: Spacedman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-16 16:27:22