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:
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:

- Par défaut les courbes se superposent (si on trace plusieurs choses dans la même fenêtre)
- Plusieurs fenêtres = plusieurs appels à
pl.figure()
Puis affichage de plusieurs courbes juxtaposées dans une fenêtre:
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
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.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:
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:
pl.hist(a) # 10 catégories par défaut
Sauvegarder la figure courante
Vraiment très simple (et très utile pour les rapports)
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:
- Aucun ou Certificat d’études primaires
- Brevet des collèges
- CAP ou BEP
- Baccalauréat
- IUT, BTS, diplôme de 1er cycle universitaire (DEUG, L1, L2) ou diplôme équivalent
- Diplôme supérieur à Baccalauréat +2
- Diplôme de 2ème ou 3ème cycle universitaire
- Diplôme d'une grande école (ingénieur, commerce)
Correspondances des colonnes:
- Moyenne des heures travaillées
- Salaire horaire
- 2 colonnes répétées 3 fois: Ensemble, Femmes, Homme
Chargement des données:
import matplotlib.pyplot as plt
data = np.loadtxt("dataSalaire.csv", delimiter=';')
Questions
- A l'aide de la méthode
scatter
, tracer les salaires moyens en fonction des diplômes pour:
NB: dans un premier temps, on trace le salaire en fonction de l'indice de ligne- L'ensemble de la population (en vert)
- Les femmes (en rose)
- Les hommes (en bleu)
- Ajouter des titres sur les axes (
xlabel
,ylabel
) - Modifier l'axe des
x
pour afficher le diplôme (il suffit de suivre le code ci-dessous)
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)