Domanda

Questa domanda ha già una risposta qui:

Sto cercando di generare una figura a un computer remoto con il comando pylab.savefig. Ma ho ottenuto tale errore:

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

Come posso risparmiare la cifra correttamente?

È stato utile?

Soluzione

Per impostazione predefinita, matplotlib userà qualcosa come il back-end TkAgg. Questo richiede un server X in esecuzione.

Mentre si può semplicemente utilizzare X-forwarding, ci sarà un ritardo notevole, come tentativi matplotlib di connettersi con l'X-server remoto. Se non avete bisogno di interagire con la trama, è spesso più bello per velocizzare le cose, evitando una X-collegamento del tutto.

Se si vuole fare una trama senza bisogno di un server X a tutti, utilizzare il Agg backend .

es. fare qualcosa di simile:

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')

Se si desidera che questo sia il comportamento predefinito, è possibile modificare le matplotlibrc il file per usare il backend Agg per impostazione predefinita.

questo articolo per ulteriori informazioni .

Altri suggerimenti

Prova a impostare la variabile DISPLAY sul valore appropriato.

Grafica attraverso la rete utilizzando lavoro X11 da parte del cliente (remoto) computer con una variabile di ambiente DISPLAY che dice dove tracciare la grafica. In genere sarebbe qualcosa di simile mydesktop.example.com:0.0 - poi, quando un programma X11 cerca di disegnare qualcosa, si ottiene sfrecciò attraverso la rete a mydesktop.example.com, che è la macchina che si sta seduti davanti (la X server) e fino si apre.

Ora, se la macchina di fronte a voi è Windows, allora avrete bisogno di ottenere un server X da qualche parte -. Cygwin / X11 o commerciali superare farà bene

È inoltre necessario assicurarsi che la sicurezza è gestita -. Cant basta scrivere a chiunque di schermo attraverso la rete

Come vi state collegando la macchina remota? Perché se si sta andando da una macchina Linux ad un altro sistema Linux con ssh allora la soluzione più semplice è probabilmente 'Usa ssh -X foo.example.com' per collegare -. Questo tubi la connessione X11 tramite un socket locale

Quindi, se ssh -X isnt la risposta, possiamo avere qualche informazione in più sui sistemi operativi coinvolti per favore?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top