Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / conserver une figure matplotlib pendant un nouveau calcul

conserver une figure matplotlib pendant un nouveau calcul

Remonter à Forum général Python
  • conserver une figure matplotlib pendant un nouveau calcul

    Envoyé par sjprm le 22 Février 2009 à 18:26
    Bonjour à tous,

    J'opère depuis quelques temps un passage de mes programmes de matlab vers python à partir de numpy et de matplotlib, qui se passe super bien, notamment grâce aux conseils glanés sur le forum, donc merci à tous, l'entraide du forum est un vrai soulagement !

    Là, il reste encore deux ou trois petites choses que je n'arrive pas à faire mais j'ai l'impression d'arriver à la fin.

    Le plus important pour moi serait de pouvoir conserver une figure matplotlib alors que je lance un nouveau calcul, l'idéal étant de pouvoir tracer ce nouveau calcul sur l'ancienne figure. J'arrive pas à trouver la bonne instruction et je me demande bien si c'est possible, aujourd'hui je suis obligé de fermer la figure pour pouvoir en afficher une nouvelle, quelqu'un aurait un info ?

    lionel
    • Re: conserver une figure matplotlib pendant un nouveau calcul

      Envoyé par sjprm le 23 Février 2009 à 00:31
      j'ai l'impression que ces scripts montrent qu'au au sein d'un même programme on peut faire ce qu'on veut, superposer des courbes, en enlever etc. et ça c'est OK
      Par contre, ce que je n'arrive pas à faire c'est, une fois la figure tracée, lancer un nouveau calcul, avec d'autres paramètres par exemple et tracer ce nouveau résultat sur la première figure. Car pour lancer un nouveau calcul, je suis obligé de fermer la première figure...
      il doit bien y avoir un moyen !
    • Re: conserver une figure matplotlib pendant un nouveau calcul

      Envoyé par glickind le 24 Février 2009 à 03:14
      en effet, voici quelques précisions.
      au préalable, il faut avoir installé: python, ipython, numpy et matplotlib

      l'astuce est de lancer ipython avec l'option pylab:

      $ ipython -pylab
      Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
      Type "copyright", "credits" or "license" for more information.

      IPython 0.8.1 -- An enhanced Interactive Python.
      ? -> Introduction to IPython's features.
      %magic -> Information about IPython's 'magic' % functions.
      help -> Python's own help system.
      object? -> Details about 'object'. ?object also works, ?? prints more.

      Welcome to pylab, a matplotlib-based Python environment.
      For more information, type 'help(pylab)'.

      In [1]: import numpy as N

      In [2]: import pylab as P

      In [3]: x = N.arange(10)

      In [4]: fig = P.figure()

      In [5]: ax = fig.add_subplot(111)

      In [6]: ax.plot(x)
      Out[6]: []

      In [7]: P.figure(num=fig.number) # doit faire apparaitre une fenetre figure 1 qu'il n'est pas necessaire de fermer pour continuer
      Out[7]:

      In [8]: ax.plot(x+10)
      Out[8]: []

      In [9]: P.figure(num=fig.number) # met a jour la figure numero 1
      Out[9]:

      In [10]: ax.plot(x+20)
      Out[10]: []

      In [11]: P.figure(1) # met a jour la figure numero 1
      Out[11]:

      In [12]: del ax.lines[1] # efface la 2eme ligne

      In [13]: figure(num=fig.number) # met a jour la figure numero 1
      Out[13]:
    • Re: conserver une figure matplotlib pendant un nouveau calcul

      Envoyé par sjprm le 24 Février 2009 à 08:16
      Effectivement, je commence à comprendre que j'ai loupé l'étape ipython !
      Merci de ton aide !

    • Re: conserver une figure matplotlib pendant un nouveau calcul

      Envoyé par glickind le 22 Février 2009 à 21:35
      et avec les commandes figure et show ?
      voir l'exemple suivant:
      http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html
    • Re: conserver une figure matplotlib pendant un nouveau calcul

      Envoyé par glickind le 22 Février 2009 à 21:47
      autre exemple où l'on ajoute puis efface des données:
      http://www.scipy.org/Cookbook/Matplotlib/DeletingAnExistingDataSeries
Rendu par Ploneboard