From MAPSI

Main: TutoPythonAff

Retour vers le tutoriel complet

Affichage d'une liste de coordonnées : courbes (x,y)

Soit des vecteurs x et y de même tailles, par exemple:

x = np.linspace(0,10,20)   # 20 points entre 0 et 10
y1 = x*x + 2*x             # la fonction a tracer
y2 = np.sqrt(x)            # la fonction a tracer

import matplotlib.pyplot as pl

pl.figure()               # creation d'une figure
pl.plot(x,y1)
pl.plot(x,y2)

Avec

  x
  Out[23]: 
  array([  0.        ,   0.52631579,   1.05263158,   1.57894737,
         2.10526316,   2.63157895,   3.15789474,   3.68421053,
         4.21052632,   4.73684211,   5.26315789,   5.78947368,
         6.31578947,   6.84210526,   7.36842105,   7.89473684,
         8.42105263,   8.94736842,   9.47368421,  10.        ])
  y1
  Out[25]: 
  array([   0.        ,    1.32963989,    3.2132964 ,    5.65096953,
          8.64265928,   12.18836565,   16.28808864,   20.94182825,
         26.14958449,   31.91135734,   38.22714681,   45.09695291,
         52.52077562,   60.49861496,   69.03047091,   78.11634349,
         87.75623269,   97.9501385 ,  108.69806094,  120.        ])

Résultat:

Puis affichage de plusieurs courbes juxtaposées dans une fenêtre:

import matplotlib.pyplot as pl

pl.figure()               # creation d'une figure
pl.subplot(1,2,1)         # division de la fenetre en une matrice 1x2
pl.plot(x,y1,'g--', label='$y = x^2+2x$')
                          # affichage de la courbe + style + etiquette
pl.legend(loc=0)
pl.subplot(1,2,2)
pl.plot(x,y2, 'r*-', label='$y = \sqrt{x}$')
pl.legend(loc=2)          # affichage de la légende en haut a gauche
pl.show()                 # affichage de la fenetre

Affichage d'un nuage de points

Les données ont la même forme que précédemment, mais on souhaite afficher un nuage de point

x = np.linspace(0,5,50)
y = x*x + 2*x
yb = y + np.random.randn(x.shape[0]) *3            # la fonction a tracer

pl.figure()               # creation d'une figure
pl.plot(x,yb, '+')    # simple ajout d'une fonction de style

Pour aller plus loin avec les nuages de points (tailles des points, couleurs des points,...):

pl.figure()               # creation d'une figure
pl.scatter(x,yb, 20 - (y-yb)**2) # jouer avec le rayon des points du nuage

pl.figure()               # creation d'une figure
pl.scatter(x,yb, c = np.abs(y-yb )) # jouer avec les couleurs des points du nuage

Pour aller encore plus loin dans les interactions: lien

Affichage d'une matrice

Les grosses matrices (au delà de 20x20) sont difficiles à "explorer"... Une solution consiste à les afficher dans une figure pour étudier leur allure générale:

C = np.random.rand(5,10) # grosse matrice
pl.figure()
pl.imshow(C, interpolation='nearest')                # affichage sour forme d'image
                            # les couleurs correspondent aux valeurs
pl.colorbar()               # legende
pl.show()

Histogramme

Fonction de gestion des histogrammes:

a = np.random.randn(1000)
pl.hist(a)                     # 10 catégories par défaut

Sauvegarder la figure courante

Vraiment très simple (et très utile pour les rapports)

savefig('foo.pdf')

Affichage sur des données INSEE sur le salaire en fonction du diplôme et du sexe

Données brutes disponibles ici

Données mises en forme: ici

Correspondances des lignes:

Correspondances des colonnes:

Chargement des données:

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("dataSalaire.csv", delimiter=';')

Questions

fig = plt.figure() # astuce: récupération d'un pointeur pour pouvoir modifier
p = fig.add_subplot(111)
[...]
diplomes = ["Aucun", "BEPC", "CAP/BEP", "Bac", "IUT, BTS, DEUG", ">Bac+2", "Master/Phd", "Ecole Ing/com"]

p.set_xticks(np.arange(data.shape[0])) # où positionner les étiquettes
lab = p.set_xticklabels(diplomes)
plt.xlabel(U"Diplome", fontsize=20)
plt.setp(lab, rotation=45, fontsize=10)
Retrieved from http://webia.lip6.fr/~mapsi/pmwiki.php?n=Main.TutoPythonAff
Page last modified on June 26, 2017, at 10:54 AM EST