Partage
  • Partager sur Facebook
  • Partager sur Twitter

Intégrer une figure à un subplot

Sujet résolu
    18 mai 2015 à 17:07:02

    Bonjour,

    Je cherche à intégrer une figure à un subplot, mais je n'arrive pas à trouver comment. Je procède comme ceci sans succès :

    a=[x1,y1]
    b=[x2,y2]
    
    def Ma_fonction(...):
         return fig
    
    c = Ma_fonction(a)
    
    fig=plt.figure()
    
    plt.subplot(3,1,1)
    plt.plot(a[0], a[1])
    
    plt.subplot(3,1,2)
    plt.plot(b[0], b[1])
    
    plt.subplot(3,1,3)
    c
    
    fig.show()



    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2015 à 17:24:13

      Je ne suis pas sûr d'avoir compris, tu recherches à faire ça ?

      fig, ax = plt.subplots(2,1)
      ax[0].plot(a[0], a[1])
      ax[1].plot(b[0], b[1])
      plt.show()




      -
      Edité par Jevanni 18 mai 2015 à 17:24:34

      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2015 à 11:43:47

        Bonjour, merci pour ta réponse, c'est presque ça. Pour ce côté là, ça va. C'est pour tracer le "c" que ça se complique.

        "c" est une figure retournée par une fonction: c=Ma_Fonction(...), je voudrais la subploter avec le reste.

        • Partager sur Facebook
        • Partager sur Twitter
          19 mai 2015 à 14:24:42

          Ok je n'ai pour l'instant jamais fait ça, mais peut être que tu peux récupérer l'ax de l'autre figure (j'imagine que c'est une figure de matplotlib dont tu nous parles) avec ta fonction, et faire ensuite un truc du genre :

          previousax = mafonction()
          fig, ax = plt.subplots(3,1)
          ax[0].plot(a[0], a[1])
          ax[1].plot(b[0], b[1])
          ax[2] = previousax
          plt.show()

          Mais c'est vraiment à tester ...

          • Partager sur Facebook
          • Partager sur Twitter
            19 mai 2015 à 15:52:15

            j'ai essayé comme tu viens de proposer:

            à savoir :

            def Ma fonction(...)
                ...
                ax=fig.gca()
                return ax
            
            fig, ax=plt.subplots(1,1)
            ax[0]=d
            
            Traceback (most recent call last):
              File "<stdin>", line 1, in <module>
            TypeError: 'AxesSubplot' object does not support item assignment

            Mais un message d'erreur apparait dans l'affectation... Mais il semblerait que .gca soit bien l'axe en question, puisque quand je cherche à savoir ce que c'est, ça retourne

            <matplotlib.axes._subplots.AxesSubplot object at 0x000000000F2730B8>

            Mais je ne trouve pas encore comment l'assigner.


            • Partager sur Facebook
            • Partager sur Twitter
              19 mai 2015 à 15:55:45

              Nan ça semble correct, le seul truc c'est que tu fais un subplots(1,1), ce qui inclut ainsi une seule figure et donc qu'un axe. Du coup subplots ne te renvoie pas une liste (ou plutôt une numpy.array) mais un seul item. Si tu enlèves les crochets (ax[0] en ax) dans ton affectation, est-ce que ça marche ?
              • Partager sur Facebook
              • Partager sur Twitter
                20 mai 2015 à 10:30:31

                Bon, en fait j'ai procédé différemment :

                ma fonction qui fait un plot, je l'écris comme ça:

                def plot_signal(x,y,ax,step=None):
                    
                    ...   
                    ax.plot(signal_light[0],signal_light[1])
                
                
                fig, ax = plt.subplots(3, 1, sharex=True, sharey='row')
                
                af.plot_signal(x1,y1,ax[0])
                af.plot_signal(x2,y2,ax[1])
                af.plot_signal(x3,y3,ax[2])
                

                et là ça marche !

                Merci pour l'aide !

                • Partager sur Facebook
                • Partager sur Twitter

                Intégrer une figure à un subplot

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown