Chaque fois que j'appelle show()
Dans Matplotlib, la fenêtre de tracé apparaît derrière toutes les autres fenêtres et je dois tout minimiser pour la voir. Existe-t-il un moyen d'empêcher cela ou de la mettre en avant de manière programmatique ? Sur OSX Lion. Python 2.7
Réponses
Trop de publicités?Ce n'est pas exactement une réponse à votre question, mais j'utilise ipython au lieu de la console python par défaut. Lorsqu'il est lancé avec ipython --pylab
Je peux tracer, par exemple, en tapant
>> plot([1,3,2])
et faire apparaître l'intrigue devant. Il possède également d'autres fonctionnalités très intéressantes ;)
Les développeurs de Matplotlib semblent être conscients de ce problème. Mais en regardant https://github.com/matplotlib/matplotlib/issues/596 il semble qu'il faudra attendre un certain temps avant d'obtenir une solution, apparemment parce que certaines personnes trouvent gênant que figure.show() "vole" de l'espace à l'écran.
Bien. Cette réponse est présentée dans les commentaires de la réponse acceptée mais je pense qu'elle mérite d'avoir une place à part car elle résout bien le problème. En plus du problème de l'auteur, j'ai également eu le problème que la fenêtre de matplotlib n'était pas dans la barre des tâches de Windows actif et que je ne pouvais donc pas passer à elle par <Alt>+<Tab>
.
Changement du backend par défaut de matplotlib macosx
a tout résolu. Vous pouvez essayer immédiatement dans votre code comme ceci :
import matplotlib
matplotlib.use("Qt5agg")
Qt5agg
pourrait ne pas être présenté dans votre système, alors veuillez choisir celui qui l'est. Vous pouvez les trouver :
import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)
Si cela vous a aidé, vous pouvez modifier votre backend dans la configuration. Pour cela, localisez-le d'abord :
import matplotlib
matplotlib.matplotlib_fname()
Alors changez backend:
valeur :
backend : macosx
à votre backend. J'ai utilisé à la fin :
backend : TkAgg
Il se peut que ce soit spécifique au système d'exploitation, mais l'utilisation du traçage interactif (qui effectue le traçage dès que vous l'ordonnez) fait que les chiffres apparaissent au premier plan dès que le système d'exploitation le permet. comme ils sont faits sur Ubuntu :
import pylab as P
P.ion()
P.figure(1)
P.plot([1,2,3],[1,4,9])
J'ai la même configuration que nickponline. Ce qui fonctionne pour moi est :
from pylab import get_current_fig_manager()
get_current_fig_manager().window.raise_()
Si vous avez plusieurs figures, cela n'augmente que celle qui est actuellement active. Pour ce cas, j'ai trouvé que ce qui suit fonctionne :
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_()