Partage
  • Partager sur Facebook
  • Partager sur Twitter

Figure interactive

    7 février 2014 à 17:29:33

    Bonjour j'aimerais savoir si il est possible d'enregistrer une figure interactive en python, j'ai un code le suivant :

    #!/usr/bin/env python
    
    from matplotlib.widgets import Cursor
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.widgets import Button
    from matplotlib.widgets import CheckButtons
    
    
    freqs = np.arange(2, 20, 3)
    
    t = np.arange(0.0, 1.0, 0.001)
    
    s0 = np.sin(2*np.pi*t)
    s1 = np.sin(4*np.pi*t)
    s2 = np.sin(6*np.pi*t)
    fig, ax = plt.subplots()
    l0, = ax.plot(t, s0, visible=False, lw=2)
    l1, = ax.plot(t, s1, lw=2)
    l2, = ax.plot(t, s2, lw=2)
    plt.subplots_adjust(bottom=0.2,left=0.2)
    
    
    class Index:
        ind = 0
        def next(self, event):
            self.ind += 1
            i = self.ind % len(freqs)
            ydata0 = np.sin(2*np.pi*freqs[i]*t)
            ydata1 = np.sin(4*np.pi*freqs[i]*t)
            ydata2 = np.sin(6*np.pi*freqs[i]*t)
            l0.set_ydata(ydata0)
            l1.set_ydata(ydata1)
            l2.set_ydata(ydata2)        
            plt.draw()
    
        def prev(self, event):
            self.ind -= 1
            i = self.ind % len(freqs)
            ydata0 = np.sin(2*np.pi*freqs[i]*t)
            ydata1 = np.sin(4*np.pi*freqs[i]*t)
            ydata2 = np.sin(6*np.pi*freqs[i]*t) 
            l0.set_ydata(ydata0)        
            l1.set_ydata(ydata1)
            l2.set_ydata(ydata2)         
            plt.draw()
        
            
    callback = Index()
    axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
    axnext = plt.axes([0.81, 0.05, 0.1, 0.075])             
    rax = plt.axes([0.05, 0.4, 0.1, 0.15])
    check = CheckButtons(rax, ('2 Hz', '4 Hz', '6 Hz'), (False, True, True))
    def func(label):
        if label == '2 Hz': l0.set_visible(not l0.get_visible())
        elif label == '4 Hz': l1.set_visible(not l1.get_visible())
        elif label == '6 Hz': l2.set_visible(not l2.get_visible())
        plt.draw()
        
    check.on_clicked(func)
    
    bnext = Button(axnext, 'Next')
    bnext.on_clicked(callback.next)
    bprev = Button(axprev, 'Previous')
    bprev.on_clicked(callback.prev)   
            
    # set useblit = True on gtkagg for enhanced performance
    cursor = Cursor(ax, useblit=True, color='red', linewidth=2 )
    
    plt.show()
    

    Il me permet de générer une figures avec trois courbes que je peux activer, désactiver, et passer à la courbe suivante.

    Donc est-il possible d'enregistrer cette figure (sous qu'elle format) afin de l'utiliser sur une présentation beamer ?  (en pdf de préférence)

    Merci de vos réponse.

    • Partager sur Facebook
    • Partager sur Twitter

    Figure interactive

    × 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