Table of Contents

    In [1]:
    # coding: utf-8
    
    from math import *
    from random import *
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def representer(liste_x,liste_y):
        plt.scatter(liste_x,liste_y,
                   color = 'blue', marker = 'D', s = 30)
        plt.axis([-12, 12, -12, 12])
        plt.xlabel('Abscisse X')
        plt.ylabel('Ordonnée Y')
        plt.title('Titre du graphique')
        plt.grid()
        plt.show()
    
    def points(liste_x,liste_y,n):
        for i in range(n) :
            x=int(input(" valeur de x"))
            y=int(input(" Valeur de y"))
            liste_x.append(x)
            liste_y.append(y)
        return liste_x,liste_y
    
    def demo0():
        n=int(input("Entrer le nombre de points : "))
        liste_x=[]
        liste_y=[]
        liste_x,liste_y = points(liste_x,liste_y,n)
        representer(liste_x,liste_y)
    
    In [2]:
    demo0()
    
    Entrer le nombre de points : 3
     valeur de x1
     Valeur de y1
     valeur de x2
     Valeur de y3
     valeur de x-1
     Valeur de y2
    
    In [3]:
    %matplotlib inline
    
    def f(x):
        return x**2
    
    def demo1():
        "Affiche basique la courbe de la  fonction f"
        # A partir de deux listes, on peut créer un graphique.
        # La première instruction crée le graphique et nous verrons que l'on peut ajouter des éléments supplémentaires à ce graphiqe.
        # La seconde instruction affiche l'ensemble.
        lx=np.linspace(-2,2,15) #crée une liste de 15 nombres allant de -2 à 2
        # On peut créer une listes de valeurs en calculant les images de tous les éléments de lx en écrivant f(lx):
        plt.plot(lx,f(lx))
        plt.show()
    
    def demo2():
        "Affiche avec quelques options la courbe de la  fonction f"
        lx=np.arange(-4,6,0.01)
        plt.title("demo2")
        plt.plot(lx,f(lx),color='r')
        plt.axis([-3,4,-1,17])
        plt.axhline(color="b")
        plt.axvline(color="g")
        plt.show()
    
    
    def demo3():
        " Création d'un histogramme à pas inégaux"
        plt.title("demo3")
        lvaleurs=[2,5,5,5,7,8,8,9,9,9,10,10,12,13,13,15,17,18,19]
        lbornes=[0,6,8,10,12,15,18,20]
        plt.hist(lvaleurs,lbornes,normed=True)
        plt.show()   #Affichage du graphique
        plt.savefig("graphique.png")  #que l'on peut-même enregistrer comme image
    
    def demo4():
        "Affichage d 'un nuage de points aléatoires"
        lx=np.random.uniform(0,1,1000)
        ly=np.random.uniform(0,1,1000)
        plt.title("demo4")
        plt.scatter(lx,ly,color="r")
        plt.axis([-0.2,1.2,-0.2,1.2])
        plt.axhline(color="k")
        plt.axvline(color="k")
        plt.show()
    
    def demo4b(nb=1000):
        "Affichage d 'un nuage de points aléatoires et test de leur présence dans un disque"
        plt.title("demo4b")
        plt.axhline(color="k")
        plt.axvline(color="k")
        disque=0
        for i in range(nb):
            x=uniform(-1,1)  #Renvoie un nombre aléatoire de entre -1 et 1
            y=uniform(-1,1)
            R=sqrt(x**2+y**2)
            if R<1:
                plt.plot(x,y,"og")
                disque=disque+1
            else:
                plt.plot (x,y,"or")
            #plt.pause(0.01)  #fonctionne mal sous Jupyter mais bien sous EduPython
        print(disque/nb)
        print(disque/nb)
        plt.show()
    
    
    def g(x,a=1):
        return 1/(x-a)
    
    
    def demo5():
        'Annotations dans un graphique en Latex et  Axes du repère'
        lx= np.linspace(-1,4,120)
        plt.plot(lx,g(lx,2),'rx')
        plt.title("demo5")
        #Déplace les axes du repère
        #Aller voir : https://python.developpez.com/tutoriels/graphique-2d/matplotlib/#LII-G
        ax = plt.gca()
        ax.spines['right'].set_color('none')
        ax.spines['top'].set_color('none')
        ax.xaxis.set_ticks_position('bottom')
        ax.spines['bottom'].set_position(('data',0))
        ax.yaxis.set_ticks_position('left')
        ax.spines['left'].set_position(('data',0))
    
    
        #xy=(1, 0) désigne la pointe de la flèche
        #xytext=(-120, +30) désigne le décalage du texte par rapport à cette pointe
    
        plt.annotate(r"$(\frac{1}{x-a})$ n'est pas définie en $a$",
                 xy=(2, 0), xycoords='data',
                 xytext=(-100, +30), textcoords='offset points', fontsize=16,
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
        plt.show()
    
    
    def demo6():
        "afficher plusieurs sous-graphique dans un même graphique"
    # En testant puis en copiant-collant le code ci-dessous, afficher les graphiques des fonctions composées nommées g,h,k et définies par (f(x)+2) ; (f(x+2)) et (-f(x)) en y ajoutant tous les commentaires nécessaires.
    
        fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
        lx= np.linspace(-3, 3, 100) #rempli la liste lx de valeurs allant de -2 à 2
    
        plt.subplot(221)  #Pour s'occuper du graphique numéro dans un tableau de graphique 2×2
        plt.subplots_adjust(hspace=0.4)  #Pour espacer les graphiques
    
        plt.title("Graphique 1 de la demo6")
        plt.plot(lx,f(lx))
    
        plt.subplot(222)
        plt.title("Sous Graphique 2")
        plt.plot(lx,f(lx))
    
        plt.subplot(223)
        plt.title("Sous Graphique 3")
        plt.plot(lx,f(lx))
    
        plt.subplot(224)
        plt.title("Sous Graphique 4")
        plt.plot(lx,f(lx))
    
    
        plt.show()
    
    
    def h(x):
        if x<0:
            return -x
        else:
            return x
    
    def demo7():
        "Le graphique d'une fonction qui n'est pas définie par une simple formule"
        lx=np.arange(-4,6,0.5)
        #ly=f(lx) cette commande ne peut alors pas fonctionner car on ne peut effectuer le test lx<0
        # Il faut plutôt faire la méthode suivante pour forcer le calcul pour chaque élément de la liste
        ly=[h(x) for x in lx]   #la liste ly est crée à partir de chaque élément de la liste lx
        plt.title("demo7")
        plt.plot(lx,ly)
        plt.show()
    
    def demo8():
        "Et pour aller plus loin"
        "Tout est possible, le mieux est toujours de partir d'exemples et de les copier-coller pour se les approprier"
        lx=np.linspace(-3,5,20) #Une liste de 20 nombres de -2 à 2
    
        plt.title("La courbe de la fonction f demo8")
        plt.plot(lx,f(lx))
        plt.xlim(-3,5)
        plt.ylim(-5,5)
        plt.scatter(-1,f(-1))
        plt.show()
    
    def demo9():
        "encore plus loin"
        lx=np.linspace(-3,5,20) #Une liste de 20 nombres de -2 à 2
    
        plt.title("La courbe de la fonction f demo9")
    
        lx=np.linspace(-10,10,200)
        plt.plot(lx,f(lx),"r--",label='Courbe de f')  #Pour la couleur et la forme
    
        lx2=np.linspace(-10,10,20)  #seulement 20 points
        plt.plot(lx2,f(lx2),"o", label='Images des entiers')
    
        plt.grid(True)          #Pour afficher une grille
        plt.ylim(-2,20)
        plt.legend(loc='upper right')  #Pour afficher les label définis plus haut
    
        plt.show()
        plt.savefig('Courbe de f.png')  #On peut même l'enregistrer dans un fichier image
    
    def demo10(xmin=-10,xmax=+10,pas=0.001,lxp=[-6,-4,2,3],p_graduations_abs=1,p_graduations_ord=2):
        "Affiche la courbe de f dans un repère quadrillé en parquant les points dont les abscisses sont dans lxp"
        "et la graduation de la grille dans p_graduations_abs=1,p_graduations_ord=2"
        lx=np.arange(xmin,xmax+pas,pas)
        #ly=f(lx)
        ly=[f(x) for x in lx]
        ymin,ymax=min(min(ly),0),max(max(ly),0) #valeurs min et max de l'axe des ordonnées
    
    
        plt.title("La courbe de la fonction f demo10")
        plt.xlim(xmin,xmax) # valeurs min et max de l'axe des abscisses
        plt.axis([xmin,xmax,ymin,ymax])
        plt.yticks(range(int(ymin),int(ymax+1),p_graduations_ord)) # graduations des axes des ordonnées
        plt.xticks(range(int(xmin),int(xmax+1),p_graduations_abs)) # graduations des axes des abscisses
        plt.grid(True) #affiche un quadrillage
        # plt.axis('equal')
        # plt.title("fonction de la leçon")
        axes = plt.gca()
        axes.spines['right'].set_color('none')
        axes.spines['top'].set_color('none')
        axes.xaxis.set_ticks_position('bottom')
        axes.spines['bottom'].set_position(('data',0))
        axes.yaxis.set_ticks_position('left')
        axes.spines['left'].set_position(('data',0))
    
    
        plt.plot(lx,ly) # Affichage dela courbe de f
    
        lyp=[f(x) for x in lxp]  # Affichage des points supplémentaires
        plt.scatter(lxp,lyp,c='red',marker='x')
    
        plt.show()  #Affichage du graphique
    
    def demo():
    
        demo1()
        demo2()
        demo3()
        demo4()
        demo4b(300)
        demo5()
        demo6()
        demo7()
        demo8()
        demo9()
        demo10(-4,4,lxp=[-1,0,1])
    
    demo()
    
    C:\Users\Pascal\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py:6521: MatplotlibDeprecationWarning: 
    The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.
      alternative="'density'", removal="3.1")
    
    0.8166666666666667
    0.8166666666666667
    
    In [2]:
    def demo6():
        "afficher plusieurs sous-graphique dans un même graphique"
    # En testant puis en copiant-collant le code ci-dessous, afficher les graphiques des fonctions composées nommées g,h,k et définies par (f(x)+2) ; (f(x+2)) et (-f(x)) en y ajoutant tous les commentaires nécessaires.
    
        fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
        lx= np.linspace(-3, 3, 100) #rempli la liste lx de valeurs allant de -2 à 2
    
        plt.subplot(221)  #Pour s'occuper du graphique numéro dans un tableau de graphique 2×2
        plt.subplots_adjust(hspace=0.4)  #Pour espacer les graphiques
    
        plt.title("Graphique 1 de la demo6")
        plt.plot(lx,f(lx))
        plt.axis([-3,3,0,20])
    
        plt.subplot(222)
        plt.title("Sous Graphique 2")
        plt.plot(lx,-f(lx))
        plt.axis([-3,3,-20,0])
            
        plt.subplot(223)
        plt.title("Sous Graphique 3")
        plt.plot(lx,f(lx)+4)
        plt.axis([-3,3,0,20])
        
        
        plt.subplot(224)
        plt.title("Sous Graphique 4")
        plt.plot(lx,3*f(lx))
        plt.axis([-3,3,0,20])
    
        plt.show()
    
    In [4]:
    demo6()
    
    In [4]:
    import matplotlib
    print(matplotlib.__version__)
    
    3.0.2
    
    In [ ]:
     
    
    In [ ]: