2012-05-31 15 views
11

Ho recentemente iniziato a utilizzare sublimetext 2, tuttavia ho notato oggi che la funzione plt.show() non sembra funzionare quando viene eseguita all'interno di sublimetext.Grafici Matlotlib non visualizzati in sublimetext

Se per esempio creo il seguente script:

import matplotlib.pyplot as plt 
plt.plot([1,2,3,4]) 
plt.show() 

L'esecuzione di questo con IDLE genera una trama, ma utilizzando sublimetext viene generato alcun output. Continua a 'pensare' finché non termino il processo python.exe dopo il quale viene visualizzato [Finito].

Ho frainteso come si intende utilizzare il sublimetext?

Grazie.

+0

Come stai eseguendo lo script in Sublime Text? Quale piattaforma utilizzi? – noio

+0

Non sono sicuro di cosa intendi, ho semplicemente colpito f5. – iRoygbiv

+0

Sto usando Sublime Text 3 build 3156 su Windows (e versione 3143 su CentOS). Il codice funziona bene su entrambi i sistemi. Le finestre dell'immagine vengono visualizzate dopo aver premuto 'Ctrl + B' per eseguire lo script. – jdhao

risposta

13

La mia ipotesi sarebbe che Sublime Text 2 avvii il codice nel proprio ambiente e solo trap e visualizza l'output della console. Lo stesso problema esiste quando si usano le GUI, come wxPython.

Un altro problema è aprire il prompt dei comandi e avviarlo manualmente (python file.py).

MODIFICA:Here indica che "In Windows, le GUI sono soppresse".

EDIT 2:Here elenca un modo per risolverlo, proprio in fondo alla pagina.

+0

Grazie mille! Questo ha funzionato per me dopo ore di ricerca su Google! – Fractaly

10

modo più appropriato è quello di aggiungere una sola riga nel file di sistema di compilazione di Python di default:

"shell": true 

O fare ulteriore sistema di Python compilazione con:

{ 
    "cmd": ["python", "-u", "$file"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python", 
    "shell": true 
} 
5

ho provato la risposta di theta come suggerito sopra . Funziona bene. Nel caso in cui la console si apre e si chiude subito come l'esecuzione di file python direttamente dal file explorer, basta aggiungere la seguente riga alla fine:

matplotlib.pyplot.show('hold') 

La mia prima volta qui segreterie. Scusa se non ho aderito al formato della risposta.

+2

questa dovrebbe essere la risposta giusta. Mantiene la finestra di stampa su, senza modificare l'ambiente di sviluppo – nazikus

1

Ho avuto un problema simile sotto Ubuntu. Stavo cercando di tracciare una pandasDataFrame come questo:

df = pandas.DataFrame([*range(5)]) 
df.plot() 

Ma la trama non ha mostrato. Risulta che è necessario fare plt.show(), come discusso here.

+0

grazie a @Roald :) –

0

nota nel testo sublime 3 (con il pacchetto anaconda installato)

è necessario aggiungere un sistema di compilazione personalizzato come theta detto, da:

prima aggiungere una cartella denominata pitone \path\to\Sublime Text Build XXXX\Data\Packages

poi metti un file chiamato python.sublime-build in quella cartella.

{ 
    "cmd": ["python", "-u", "$file"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python", 
    "shell": true 
} 

e ricordarsi di aggiungere plt.show() come Roald detto.

plt.imshow(image) 
plt.show() 

Demo:

enter image description here