2012-04-30 11 views
14

Ogni volta che chiamo il codice show() in matplotlib, la finestra del grafico appare dietro tutte le altre finestre e devo minimizzare tutto per vederlo. C'è un modo per impedirlo o portarlo in primo piano. Su OSX Lion. Python 2.7La finestra Matplotlib appare sul retro?

risposta

1

Non esattamente una risposta alla tua domanda, ma sto usando ipython invece della console python predefinita. Quando l'ho lanciato con ipython --pylab posso tracciare ad es. digitando

>> plot([1,3,2]) 

e avere la trama pop-up di fronte. Ha anche alcune altre funzionalità molto interessanti;)

+1

sto sperimentando lo stesso comportamento sia con pitone e ipython sul mio sistema 10.9.1 quindi non è necessariamente una soluzione in ogni caso. – anddam

+0

Lo stesso qui. Credo che anddam abbia riscontrato lo stesso problema che ho io, ovvero che la finestra matplotlib è _permanently_ dietro tutte le altre finestre. Non riesco a metterlo a fuoco, anche quando clicco su di esso nel controllo della missione. L'unica soluzione che ho finora capito è quella di usare il controllo missione per rilasciare temporaneamente la finestra _in uno spazio vuoto_, quindi passare a quello spazio, mettere a fuoco la finestra, quindi trascinare la finestra _back allo spazio originale_, dove il z-order sarà finalmente corretto (a meno che non clicchi su qualsiasi altra finestra, il che fa sì che torni immediatamente sul retro). –

+1

** Aggiornamento: ** Il backend di TkAgg non ha lo stesso problema; viene fornita una finestra di livello superiore (ad esempio, è possibile passare ad essa utilizzando Cmd-Tab). Inizia ancora nella parte inferiore dell'ordine z, ma ora si comporta normalmente. Penso che ci deve essere un bug nel backend MacOSX in Mavericks. –

0

Può essere specifico sistema operativo, ma usando tracciato interattivo (che riporta non appena si ordina) fa sì che i dati a venire in primo piano non appena come sono fatti su Ubuntu:

import pylab as P 
P.ion() 
P.figure(1) 
P.plot([1,2,3],[1,4,9]) 
1

Gli sviluppatori di Matplotlib sembrano essere a conoscenza di questo problema. Ma esaminando https://github.com/matplotlib/matplotlib/issues/596 sembra che ci vorrà un po 'di tempo prima di ottenere una soluzione, apparentemente perché alcune persone trovano fastidioso che figure.show() "rubi" lo spazio sullo schermo.

0

Ho lo stesso set up di nickponline. Quello che funziona per me è:

from pylab import get_current_fig_manager() 
get_current_fig_manager().window.raise_() 

Se si dispone di più cifre, solleva solo quella attualmente attiva. Per questo caso, ho scoperto che le seguenti opere:

fig1=figure(1) 
cfm1=get_current_fig_manager().window 

fig2=figure(2) 
cfm2=get_current_fig_manager().window 
... 
cfm1.activateWindow() 
cfm1._raise() 
pause(.1) # or something else that uses up some time 
cfm2.activateWindow() 
cfm2.raise_() 
+1

la riga di importazione ha un trailing '()', inoltre sembra che non ci siano più proprietà window in FigureManager – anddam

Problemi correlati