Cours-Gratuit
  • Accueil
  • Blog
  • Cours informatique
home icon Cours gratuits » Cours informatique » Cours programmation » Cours Python » Tutoriel Python »

Articles similaires

  • Tutoriel Python : comment réaliser un Scatter plot
  • Exercice UML (système de livraison express à domicile)
  • Tuto PowerPoint : Faire apparaître et disparaître une image avec animation
  • Comment obtenir un visa étudiant pour le Canada ?
  • Comment trouver un emploi au Canada depuis l’étranger?
  • Tutoriel Python : les instructions imbriquées
  • Tuto Excel : comment faire la multiplication
  • Python : gestion des modules (importer, installer et utiliser)
  • Tuto Python : Les listes : la méthode COUNT()
  • Tuto Python: comment envoyer un e-mail
  • Python : Calculer la somme, moyenne d'une liste
  • Tuto Python : Les listes : la méthode POP()

Documents similaires

  • Cours Fonctions asynchrones et sockets en .NET

  • Apprendre python pour l’analyse de données

  • Apprendre le Framework Python Tornado par la pratique

  • Cours systèmes de Gestion de Bases de Données

  • Excel template timeline with milestones

  • Cours Excel référence absolue et relatives

  • Business charts and diagrams templates for Microsoft office PowerPoint

  • Comment faire un rétro planning pour un plan de communication ?

Tuto Python : Comment faire des animations ?

Rédigé par Mouna HAMIM, Publié le 29 Décembre 2020, Mise à jour le Jeudi, 31 Décembre 2020 01:17
Participez au vote ☆☆☆☆☆★★★★★

Table des matières

Introduction

  1. Plotly express
  2. Fonctions basiques de Plotly express

2.1. Scatter

2.2. Line

2.3. Timeline

2.4. bar

  1. Fonctions Part-of-Whole

3.1. Pie charts

3.2. Tree Map

3.3. Sunburst

  1. Distributions 1-D

4.1. Histogram

4.2. Box

  1. Distributions 2-D

5.1. Density_Heatmap

  1. 3-D Dimensions

6.1. Scatter_3d

  1. Module Animation

7.1. Comment utiliser cette librairie ?

Conclusion

Introduction

Python est un langage informatique très populaire dans le monde de la programmation. Grâce à sa variété et les différents services et possibilités qu’il offre, il est le langage préféré de plusieurs programmeurs. Aujourd’hui, nous allons découvrir une de ses fonctionnalités principales qui est la création d’animation.

En effet, Python a plusieurs bibliothèques et modules qui permettent de créer des animations telles que des figures dynamiques ou des tableaux interactifs. Dans ce tutoriel, nous allons découvrir les différents modules d’animations en Python ainsi que des exemples afin de concrétiser les notions.

1. Plotly express

Plotly express est un sous module built-in de plotly qui contient des fonctions qui permettent de créer plusieurs figures à la fois. Cette API offre plus de 30 fonctions de création de différentes figures. En effet, chaque figure créée par une seule fonction du module plotly express peut être créée avec l’appel des objets graphes seuls mais avec 10 à 100 fois plus de code !

2. Fonctions basiques de Plotly express

2.1. Scatter

Scatter est une fonction très basique de plotly express ou px, elle permet de retourner une figure animée qui contient les points des données représentés ainsi que leur cordonnées dès qu’on met le curseur sur un point.

Exemple

Syntaxe

# x et y sont donnés comme tableau
import plotly.express as px
fig = px.scatter(x=[0, 1, 5, 3, 4], y=[0, 1, 4, 3, 6])
fig.show()
 

Résultat de l’exécution

Comme vous pouvez le constater, le résultat est une représentation graphique des points donnés une fois que vous passez le curseur sur un point, ses cordonnées s’afficheront. Par exemple, si vous passez le curseur sur le premier point, il affichera X=0, Y=0.

2.2. Line

Chaque point de données est représenté par un sommet (dont l’emplacement est indiqué par les colonnes x et y) d’un point de polyligne dans l’espace 2D.

Exemple 

Dans cet exemple, on veut créer une courbe animée qui décrit l’espérance de vie au Maroc selon les années.

Syntaxe

import plotly.express as px
df = px.data.gapminder().query (" country== 'France' ")
fig = px.line(df , x="year", y=" lifeExp ", title='Life expectancy in Canada')
fig.show ()
 

Résultat de l’exécution

2.3. Timeline

La fonction px.timeline permet de dessiner des graphes chronologiques qui décrivent l’évolution d’une variable en fonction du temps.

Exemple

Syntaxe

import pandas as pd
import plotly.express as px
df = pd.DataFrame([
dict (Task= "Job A", Start= '2009-01-01', Finish= '2009-02-28'),
dict (Task= "Job B", Start= '2009-03-05', Finish= '2009-04-15'),
dict (Task= "Job C", Start= '2009-02-20', Finish= '2009-05-30')
])
fig = px.timeline (df, x_start= "Start", x_end= "Finish", y= "Task")
fig.update_yaxes (autorange= "reversed") # otherwise tasks are listed from the bottom up
fig.show()

Résultat de l’exécution

 

Le résultat de l’exécution retourne une représentation chronologique des événements. Par exemple, si vous cliquez sur le premier rectangle, l’intitulé de la tâche, la date de son début et sa fin s’afficheront et ainsi de suite pour les autres éléments.

2.4. bar

Cette fonction permet de représenter les données avec des rectangles.

Exemple

Dans cet exemple, on veut faire une animation de l’évolution de la population du Maroc en fonction des années.

Syntaxe

import plotly.express as px
data_canada = px.data.gapminder().query("country == 'Morocco'")
fig = px.bar(data_canada, x='year', y='pop',title='')
fig.show()
 

Résultat de l’exécution

A présent, nous allons passer à d’autre types d’animations du module px .

3. Fonctions Part-of-Whole

3.1. Pie charts

Un graphique circulaire est un graphique statistique circulaire, qui est divisé en secteurs dans le but d’illustrer des proportions numériques.

Exemple

Dans ce premier exemple,  nous allons afficher un pie chart qui permet de visualiser les proportions de trois classes différentes.

Syntaxe

import plotly.graph_objects as go
etiquettes = ['Classe 1' , ' Classe 2' , 'Classe 3', ' Classe 4 ' ]
valeurs = [4500, 2500, 1053, 500]
figure = go.Figure (data= [go.Pie (labels=etiquettes, values=valeurs)])
figure.show ()

Résultat de l’exécution

Exemple

Dans cet exemple, on veut afficher la distribution de la population du continent africain selon les pays.

Syntaxe

import plotly.express as px
data = px.data.gapminder().query("year == 2007").query(" continent == ' Africa '")
data.loc [data['pop'] < 2.e6, 'country'] = 'Other countries' # Represent only large countries
fig = px.pie (data, values='pop', names='country', title='Population of African continent')
fig.show ()
 

Résultat de l’exécution 

3.2. Tree Map

Px.treemap est une fonction qui permet de visualiser les données hiérarchiquement grâce à des formes imbriquées. Cette hiérarchie est définie par des étiquettes (nom des éléments) ainsi que des attributs parents .

Exemple

Dans cet exemple, nous allons créer un graphique de type treemap qui permet de modéliser les pays du monde entier dans un arbre. Par exemple, dans notre arbre, le premier nœud sera Monde et il n’aura aucun parent. Ce nœud parent aura plusieurs enfants continent (‘Africa’ , ‘Europe’ , ‘USA’…) qui eux-mêmes auront d’autre nœuds enfant pour représenter les pays.

Syntaxe

import plotly.express as px
import numpy as np
data = px.data.gapminder().query(" year == 2007 ")
data["world"] = " monde "
fig = px.treemap (data, path=['world', 'continent', 'country'], values='pop',
color='lifeExp', hover_data=[' iso_alpha '] ,
color_continuous_scale = ' RdBu ',
color_continuous_midpoint = np.average (data ['lifeExp'] , weights=data ['pop'] ) )
fig.show( )

 

Résultat de l’exécution

 

Si vous cliquez sur monde, une étiquette affichera le nombre d’habitants total de la planète. Vous remarquerez que Parent est vide pour monde. Ceci est normal car c’est le nœud principal qui n’a aucun parent. Ensuite, si vous cliquez sur China par exemple, une étiquette sera affichée contenant le nombre d’habitants, le code iso_alpha du pays ainsi que le parent du pays qui sera Asia dans ce cas.

3.3. Sunburst

Avec px.sunburst, chaque ligne de la DataFrame est représentée comme un secteur de la sunburst . Cet outil est très similaire à treemap mais avec une représentation graphique assez différente.

Exemple

Syntaxe

import plotly.express as px
data = dict (
caracteres = [" Eva ", " Chain " , " Sethe " , " Menos " , "Naomi" , "Abdel" , " Rawan " , " Epoch " , " Azur " ] ,
parents= [" ", "Eva" , "Eva" , " Sethe " , " Sethe " , "Eva", "Eva", "Rawan" , "Eva" ] ,
valeurs= [14 , 10 , 10 , 12 , 6 , 2 , 6 , 6 , 4 ] )
fig = px.sunburst (
data,
names = ' caracteres ',
parents=' parents ',
values= 'valeurs',
)
fig.show ()

Résultat de l’exécution

4. Distributions 1-D

4.1. Histogram 

 Cet outil permet de représenter la distribution des données en faisant le compte de chaque variable à compter par rapport au compte total .

Exemple

Dans cet exemple, nous désirons visualiser la distribution de quelques données de la base de données iris.

Syntaxe 

import plotly.express as px
df = px.data.iris()
fig = px.histogram (df, x= " species " )
fig.show ()
 

Résultat de l’exécution

4.2.  Box

Box est l’outil qui permet de créer des boites à moustache afin de visualiser une représentation statique des données numériques à travers leurs quartiles.

Exemple 

Syntaxe 

import plotly.express as pex
data = pex.data.iris ()
fig = pex.box (data, x=" sepal_width ", y= " species")
fig.show ()

Résultat de l’exécution 

Exemple 

Syntaxe 

import plotly.express as pex
data = pex.data.iris ()
fig = pex.box (data, x="sepal_width", y="species")
fig.show ()
 

Résultat de l’exécution 

image0011

5. Distributions 2-D

5.1. Density_Heatmap

Un histogramme 2D ou ce qu’on appelle généralement density_heatmap est une présentation 2D de l’histogramme basique. Pour faire cela, nous allons faire appel à la fonction px.density_map .

Exemple 

Syntaxe

import plotly.express as px
df = px.data.iris()
fig = px.density_heatmap(df, x=" species ", y= " petal_length " )
fig.show()

Résultat de l’exécution

 

6. 3-D Dimensions

6.1. Scatter_3d

Cet outil permet de visualiser les données dans un espace 3d.

Exemple

Dans cet exemple, nous voulons visualiser les données de la base px.data.tips() .  Les paramètres auxquels nous nous intéressons sont : le total_bill , sex et tip .

Syntaxe

import plotly.express as px
df = px.data.tips()
fig = px.scatter_3d(df, x='total_bill', y='sex', z='tip',
color='day')
fig.show()

 

Résultat de l’exécution

7. Module Animation

Nous allons à présent passer à un autre module de Python qui permet de faire des animations aussi. Animation est un sous-module du matplotlib qui permet de créer des figures d’animations .

7.1. Comment utiliser cette librairie ?

Il faut savoir que la base des animations dans cette librairie sont les deux lignes suivantes. Si vous les comprenez bien, croyez nous le tour est joué !

Syntaxe

import matplotlib.animation as anim
animation = anim.FuncAnimation(fig, chartfunc, interval = 100)

Maintenant, jetons un coup d’œil sur les paramètres de cette fonction :

  • ·Fig : C’est l’objet figure que nous allons utiliser pour dessiner nos animations.
  • ·Chartfunc : fonction qui prend en entrée un caractère numérique correspondant au temps .
  • ·Interval : représente le délai entre les frames, il prend la valeur 200 millisecondes par défaut.

Nous allons à présent faire des  exemples afin que vous comprenez d’avantage comment on utilise le module animation.

Exemple

Dans l’exemple suivant, on veut créer une animation d’une forme de sinus avec une petite balle rouge qui traverse toute la courbe.  Vous devez tout d’abord installer cette fonctionnalité qui va nous permettre d’enregistrer notre  animation comme une figure .mp4 :

Commande sur anaconda prompt :

pip install ffmpeg-python

Commande sur terminal jupyter notebook:

! pip install ffmpeg-python 

Syntaxe :

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
deux_pi = 2*np.pi
fig, ax = plt.subplots()
temps = np.arange(0.0, deux_pi, 0.001)
surf = np.sin(temps)
le = plt.plot(temps, surf)
ax = plt.axis([0,deux_pi,-1,1])
PointRouge = plt.plot([0], [np.sin(0)], 'ro')
def animate(i):
redDot.set_data(i, np.sin(i))
return PointRouge
# create animation using the animate() function
myAnimation = animation.FuncAnimation(fig, animate, frames=np.arange(0.0, deux_pi, 0.1), \
interval=10, blit=True, repeat=True)
myAnimation.save('sinus.gif', fps=30, extra_args=['-vcodec', 'libx264'])

  • On commence tout d’abord par importer les modules nécessaires au fonctionnement de notre code comme les modules numpy, matplotlib et matplotlib.pyplot.
  • Ensuite, nous définissons une figure nommée fig avec sa plage et ses axes. Puis, nous créons une instance de l’objet vide que nous allons modifier par à la suite dans l’animation. La fonction d’initialisation initialise les données et définit également les limites de l’axe.
  • La fonction qui suit est créée selon notre besoin. Dans notre cas, une onde sinusoïdale qui de déplace en fonction de la variable i . Elle renvoie un tuple qui montre au cadre d’animation les parties devant être animées.
  • Finalement, nous créons l’objet animation, on modifie ces paramètres puis on enregistre la figure sous format .mp4 .

Résultat de l’exécution :

Exemple :

Voici un autre exemple d’animation qui utilise FuncAnimation du module matplotlib.animation. Ici, nous voulons créer une animation de la fonction sinus ().

Syntaxe :

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
plt.style.use('seaborn-pastel')
figure = plt.figure ()
axs = plt.axes (xlim = (0, 4), ylim= (-2, 2))
line, = axs.plot ([], [], lw = 3)
def initialization ():
line.set_data ([], [])
return line,
def animation(j):
x_a = np.linspace(0, 4, 1000)
y_a = np.sin(2 * np.pi * (x_a - 0.01 * j))
line.set_data(x_a , y_a)
return line,
anima= FuncAnimation (figure, animation, init_func=initialisation,
frames=200, interval=20 , blit=True )
anima.save('sinus_wav.gif', writer='imagemagick')

  • Nous commençons par créer une simple fenêtre de figure avec un axe. Puis, nous instancions notre objet vide que nous allons modifier par la suite dans l’animation.
  • la fonction initialisation () est celle qui va entamer l’animation, elle initialise les données et définit aussi les limites des axes dans la figure.
  • Finalement, nous définissons la fonction animation () qui a comme paramètre le numéro d’image j . Le but est de créer une onde sinusoïdale avec un décalage correspondant à la valeur de i. Elle retourne un tuple d’objets de type plot qui doit être animé par l’objet d’animation final où le paramètre blit est mis à True.

Résultat de l’exécution :

Conclusion

Nous sommes arrivés à la fin de ce tutoriel, maintenant vous savez comment créer des animations en Python grâce aux modules Plotly.Express et Animation de matplotlib. Dorénavant, il vous sera plus facile de créer des figures animées afin de comprendre des phénomènes par exemple ou bien pour la visualisation de vos données.

Nous vous conseillons donc d’utiliser ces outils très souvent dans vos visualisons afin qu’ils deviennent familiers pour vous. Nous verrons dans des prochains tutoriels d’autres outils d’animation plus avancés. Bon courage et à très bientôt chers programmeurs !

  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Science et Tech
  • Titans de la Tech
id 11354 02