Dans ce guide pas à pas, nous verrons ce qu’est un diagramme de Gantt, pourquoi et quand ces visualisations sont utiles, comment créer un diagramme de Gantt en Python avec matplotlib, et comment le personnaliser. Au passage, nous construirons quelques exemples de diagrammes de Gantt avec matplotlib.
Qu’est-ce qu’un diagramme de Gantt et pourquoi est-il utile ?
Un diagramme de Gantt est un type d’histogramme (barres) utilisé pour représenter un planning de projet complet et son pilotage. Il affiche généralement les éléments suivants : le nom des tâches, leurs dates de début et de fin, les équipes en charge, l’avancement de la tâche en pourcentage ou en fraction, la performance par équipe, ainsi que les jalons clés du projet.
Les noms des tâches sont disposés sur l’axe des ordonnées (y), le plus souvent triés par date de début, dans l’ordre chronologique de haut en bas. L’axe des abscisses (x) représente quant à lui le temps, la largeur de chaque barre correspondant à la durée d’exécution de la tâche.
Puisqu’un diagramme de Gantt n’est, au fond, qu’une variante d’un histogramme horizontal, on peut le créer avec de nombreuses bibliothèques de visualisation Python, notamment matplotlib, Plotly, Bokeh et Altair. Dans ce tutoriel, nous nous concentrerons sur matplotlib, la plus utilisée.
Comment créer un diagramme de Gantt en Python avec Matplotlib
Utiliser barh()
Commençons par construire un diagramme de Gantt basique avec matplotlib à l’aide de la méthode barh() de matplotlib.pyplot.
Nous devons d’abord importer les bibliothèques nécessaires :
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import datetime as dtPropulsé par
Ensuite, créons des données factices pour travailler :
df = pd.DataFrame({'task':['A','B','C','D','E','F','G','H','I','J','K','L'],'team':['R&D','Accounting','Sales','Sales','IT','R&D','IT','Sales','Accounting','Accounting','Sales','IT'],'start': pd.to_datetime(['20 Oct 2022','24 Oct 2022','26 Oct 2022','31 Oct 2022','3 Nov 2022','7 Nov 2022','10 Nov 2022','14 Nov 2022','18 Nov 2022','23 Nov 2022','28 Nov 2022','30 Nov 2022']),'end': pd.to_datetime(['31 Oct 2022','28 Oct 2022','31 Oct 2022','8 Nov 2022','9 Nov 2022','18 Nov 2022','17 Nov 2022','22 Nov 2022','23 Nov 2022','1 Dec 2022','5 Dec 2022','5 Dec 2022']),'completion_frac':[1,1,1,1,1,0.95,0.7,0.35,0.1,0,0,0]})print(df)Propulsé par
Sortie :
task team start end completion_frac
0 A R&D 2022-10-202022-10-311.001 B Accounting 2022-10-242022-10-281.002 C Sales 2022-10-262022-10-311.003 D Sales 2022-10-312022-11-081.004 E IT 2022-11-032022-11-091.005 F R&D 2022-11-072022-11-180.956 G IT 2022-11-102022-11-170.707 H Sales 2022-11-142022-11-220.358 I Accounting 2022-11-182022-11-230.109 J Accounting 2022-11-232022-12-010.0010 K Sales 2022-11-282022-12-050.0011 L IT 2022-11-302022-12-050.00Propulsé par
Pour faciliter la construction d’un diagramme de Gantt avec ces données, calculons quatre colonnes supplémentaires représentant les informations suivantes :
Le nombre de jours écoulés/à écouler entre le début global du projet et la date de début de chaque tâche :
df['days_to_start']=(df['start']- df['start'].min()).dt.daysPropulsé par
Le nombre de jours écoulés/à écouler entre le début global du projet et la date de fin de chaque tâche :
df['days_to_end']=(df['end']- df['start'].min()).dt.daysPropulsé par
La durée de chaque tâche, incluant la date de début et la date de fin :
df['task_duration']= df['days_to_end']- df['days_to_start']+1# inclure aussi la date de finPropulsé par
Le statut d’avancement de chaque tâche converti d’une fraction en une portion de jours alloués à cette tâche :
df['completion_days']= df['completion_frac']* df['task_duration']Propulsé par
task team start end completion_frac days_to_start \
0 A R&D 2022-10-202022-10-311.0001 B Accounting 2022-10-242022-10-281.0042 C Sales 2022-10-262022-10-311.0063 D Sales 2022-10-312022-11-081.00114 E IT 2022-11-032022-11-091.00145 F R&D 2022-11-072022-11-180.95186 G IT 2022-11-102022-11-170.70217 H Sales 2022-11-142022-11-220.35258 I Accounting 2022-11-182022-11-230.10299 J Accounting 2022-11-232022-12-010.003410 K Sales 2022-11-282022-12-050.003911 L IT 2022-11-302022-12-050.0041
days_to_end task_duration completion_days
0111212.001855.0021166.0031999.0042077.005291211.4062885.6073393.1583460.6094290.00104680.00114660.00Propulsé par
Nous sommes maintenant prêts à générer un diagramme de Gantt basique avec matplotlib :
plt.barh(y=df['task'], width=df['task_duration'], left=df['days_to_start'])
plt.show()Propulsé par
Sortie :
Ce graphique nécessite plusieurs ajustements pour en tirer un maximum d’informations :
ajouter un titre pertinent et des étiquettes en x (dates)
inverser l’axe y pour afficher les tâches dans l’ordre chronologique de haut en bas
ajouter une grille
colorer les tâches par équipe
afficher une légende
ajouter le statut d’avancement des tâches
Nous allons implémenter ces améliorations dans un instant. Avant cela, voyons comment gérer la création d’un diagramme de Gantt basique.
Utiliser broken_barh()
Lorsque certaines tâches comportent plusieurs sous-tâches réparties dans le temps, il est préférable d’utiliser une autre méthode matplotlib : broken_barh().
Pour disposer de données factices et tester cette approche, procédons ainsi :
Ne conserver de notre dataframe initial que les tâches affectées à l’équipe Sales (nous ignorons pour l’instant la colonne completion_frac).
Renommer les colonnes start et end en start_1 et end_1 (par commodité).
Ajouter des sous-tâches à certaines des tâches disponibles.
Pour chaque sous-tâche, calculer les trois colonnes vues plus haut, à savoir :
le nombre de jours entre le début global du projet et la date de début de la sous-tâche ;
le nombre de jours entre le début global du projet et la date de fin de la sous-tâche ;
la durée de la sous-tâche, en incluant les dates de début et de fin.
# 1
df2 = df[df['team']=='Sales'][['task','team','start','end']]# 2
df2.rename(columns={'start':'start_1','end':'end_1'}, inplace=True)
df2.reset_index(drop=True, inplace=True)# 3
df2['start_2']= pd.to_datetime([None,'10 Nov 2022','25 Nov 2022',None])
df2['end_2']= pd.to_datetime([None,'14 Nov 2022','28 Nov 2022',None])
df2['start_3']= pd.to_datetime([None,None,'1 Dec 2022',None])
df2['end_3']= pd.to_datetime([None,None,'5 Dec 2022',None])# 4for i in[1,2,3]:
suffix ='_'+str(i)
df2['days_to_start'+ suffix]=(df2['start'+ suffix]- df2['start_1'].min()).dt.days
df2['days_to_end'+ suffix]=(df2['end'+ suffix]- df2['start_1'].min()).dt.days
df2['task_duration'+ suffix]= df2['days_to_end'+ suffix]- df2['days_to_start'+ suffix]+1print(df2)Propulsé par
Sortie :
task team start_1 end_1 start_2 end_2 start_3 \
0 C Sales 2022-10-262022-10-31 NaT NaT NaT
1 D Sales 2022-10-312022-11-082022-11-102022-11-14 NaT
2 H Sales 2022-11-142022-11-222022-11-252022-11-282022-12-013 K Sales 2022-11-282022-12-05 NaT NaT NaT
end_3 days_to_start_1 days_to_end_1 task_duration_1 \
0 NaT 0561 NaT 513922022-12-05192793 NaT 33408
days_to_start_2 days_to_end_2 task_duration_2 days_to_start_3 \
0 NaN NaN NaN NaN
115.019.05.0 NaN
230.033.04.036.03 NaN NaN NaN NaN
days_to_end_3 task_duration_3
0 NaN NaN
1 NaN NaN
240.05.03 NaN NaN Propulsé par
Notez que la tâche D comporte désormais deux sous-tâches, la tâche H en a trois, et les tâches C et K ont chacune une sous-tâche. Les tâches D et H sont donc celles pour lesquelles nous allons utiliser la méthode broken_barh(). Sa syntaxe étant un peu moins intuitive que celle de barh(), passons en revue ses paramètres principaux. Les paramètres obligatoires de broken_barh() sont :
xranges : une séquence de tuples au format (xmin, xwidth) indiquant le début et l’étendue de chaque barre. Chaque barre représente une sous-tâche : ce paramètre encode donc la date de début et la durée de chaque sous-tâche.
yrange : un tuple au format (ymin, yheight) indiquant la position en y et la hauteur de chaque barre.
Traçons maintenant notre diagramme de Gantt « morcelé ». L’algorithme est le suivant :
Créer une figure avec des sous-graphiques.
Parcourir les lignes du dataframe et vérifier si la tâche possède une, deux ou trois sous-tâches. En fonction du cas :
Une sous-tâche : tracer une barre avec barh() comme précédemment.
Deux sous-tâches : tracer deux barres avec broken_barh().
Trois sous-tâches : tracer trois barres avec broken_barh().
Ajouter les réglages de base : positions et libellés des graduations de l’axe y.
Dans le code ci-dessus, on peut aussi utiliser broken_barh() pour tracer les barres des tâches à une seule sous-tâche. Il suffit de remplacer cette ligne :
ax.barh(y=df2['task'], width=df2['task_duration_1'], left=df2['days_to_start_1'])Propulsé par
par celle-ci :
ax.broken_barh(xranges=[(row['days_to_start_1'], row['task_duration_1'])], yrange=(index +1,0.5))Propulsé par
Cette approche rend aussi le code plus homogène et plus lisible.
Comment personnaliser un diagramme de Gantt avec Matplotlib
task team start end completion_frac days_to_start \
0 A R&D 2022-10-202022-10-311.0001 B Accounting 2022-10-242022-10-281.0042 C Sales 2022-10-262022-10-311.0063 D Sales 2022-10-312022-11-081.00114 E IT 2022-11-032022-11-091.00145 F R&D 2022-11-072022-11-180.95186 G IT 2022-11-102022-11-170.70217 H Sales 2022-11-142022-11-220.35258 I Accounting 2022-11-182022-11-230.10299 J Accounting 2022-11-232022-12-010.003410 K Sales 2022-11-282022-12-050.003911 L IT 2022-11-302022-12-050.0041
days_to_end task_duration completion_days
0111212.001855.0021166.0031999.0042077.005291211.4062885.6073393.1583460.6094290.00104680.00114660.00Propulsé par
et à notre premier diagramme de Gantt :
plt.barh(y=df['task'], width=df['task_duration'], left=df['days_to_start'])
plt.show()Propulsé par
Sortie :
Nous souhaitons maintenant personnaliser ce graphique pour le rendre plus parlant.
Il manque une légende indiquant quelle couleur correspond à quelle équipe. Pour y remédier, créons des « patches » — des objets 2D matplotlib remplis d’une couleur prédéfinie. Nous utiliserons la classe matplotlib.patches.Patch pour générer une liste de patches, un par équipe, avec la couleur appropriée :
patches =[]for team in team_colors:
patches.append(matplotlib.patches.Patch(color=team_colors[team]))Propulsé par
Nous pouvons maintenant ajouter la légende au graphique :
fig, ax = plt.subplots()for index, row in df.iterrows():
plt.barh(y=row['task'], width=row['task_duration'], left=row['days_to_start']+1, color=team_colors[row['team']])
plt.title('Project Management Schedule of Project X', fontsize=15)
plt.gca().invert_yaxis()
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels[::7])
ax.xaxis.grid(True, alpha=0.5)# Adding a legend
ax.legend(handles=patches, labels=team_colors.keys(), fontsize=11)
plt.show()Propulsé par
Sortie :
Le diagramme de Gantt ci-dessus est nettement plus informatif.
Jusqu’ici, nous n’avons pas utilisé la colonne completion_days calculée au début. Utilisons-la maintenant pour rendre le diagramme plus instructif en affichant le niveau d’avancement de chaque tâche.
Techniquement, nous allons superposer une seconde barre sur chacune des barres existantes. La barre inférieure représentera la durée totale de la tâche (jours alloués), tandis que la barre supérieure correspondra au statut d’avancement (jours réalisés/alloués).
Pour chaque tâche, les deux barres auront la même couleur (celle de l’équipe), mais la barre inférieure sera plus claire afin de distinguer visuellement les deux.
Autrement dit, si une équipe surperforme sur une tâche, la combinaison des deux barres indiquera qu’elle a déjà travaillé plus de jours que prévu sur cette tâche (signe d’une probable finalisation avant la date limite).
À l’inverse, si une équipe sous-performe, la combinaison des barres montrera qu’elle a travaillé moins de jours que prévu (la tâche risque d’être finalisée après l’échéance).
fig, ax = plt.subplots()for index, row in df.iterrows():# Adding a lower bar - for the overall task duration
plt.barh(y=row['task'], width=row['task_duration'], left=row['days_to_start']+1, color=team_colors[row['team']], alpha=0.4)# Adding an upper bar - for the status of completion
plt.barh(y=row['task'], width=row['completion_days'], left=row['days_to_start']+1, color=team_colors[row['team']])
plt.title('Project Management Schedule of Project X', fontsize=15)
plt.gca().invert_yaxis()
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels[::7])
ax.xaxis.grid(True, alpha=0.5)
ax.legend(handles=patches, labels=team_colors.keys(), fontsize=11)
plt.show()Propulsé par
Sortie :
On voit que les équipes n’avancent pas toutes au même rythme, ce qui est courant dans les projets réels. Pour en tirer davantage d’enseignements, supposons que la date du jour est le 17 novembre 2022 et marquons-la sur le graphique :
fig, ax = plt.subplots()for index, row in df.iterrows():
plt.barh(y=row['task'], width=row['task_duration'], left=row['days_to_start']+1, color=team_colors[row['team']], alpha=0.4)
plt.barh(y=row['task'], width=row['completion_days'], left=row['days_to_start']+1, color=team_colors[row['team']])
plt.title('Project Management Schedule of Project X', fontsize=15)
plt.gca().invert_yaxis()
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels[::7])
ax.xaxis.grid(True, alpha=0.5)
ax.legend(handles=patches, labels=team_colors.keys(), fontsize=11)# Marking the current date on the chart
ax.axvline(x=29, color='r', linestyle='dashed')
ax.text(x=29.5, y=11.5, s='17/11', color='r')
plt.show()Propulsé par
Sortie :
On peut tirer les observations suivantes sur l’état actuel de Project X :
L’équipe R&D surperforme sur la tâche F et la finalisera probablement avant l’échéance.
L’équipe IT est en retard sur la tâche G et aura sans doute besoin de soutien.
L’équipe Sales suit le planning sur la tâche H.
L’équipe Accounting a démarré la tâche I en avance sur le planning.
Ces constats aident les leads et le chef de projet à ajuster le planning et à allouer les ressources nécessaires au bon moment pour éviter les retards sur les livrables.
Autres ajustements possibles
On peut enrichir davantage notre diagramme de Gantt matplotlib. Par exemple :
afficher le pourcentage d’avancement sur chaque barre ;
subdiviser certaines tâches en sous-tâches (nous avons déjà vu comment faire techniquement) ;
annoter les tâches corrélées ;
marquer les jalons et échéances clés ;
mettre en évidence les week‑ends et jours fériés ;
trier les barres par équipe ou par type de tâche ;
ajouter des graduations mineures en x pour affiner la granularité ;
améliorer la mise en forme et la disposition générales du graphique.
Veillez toutefois à garder le diagramme lisible et à éviter de le surcharger. Comme pour toute visualisation, il s’agit de trouver le bon équilibre entre richesse d’information, lisibilité du graphique et clarté du code qui le génère.
Créez votre propre diagramme de Gantt en Python avec Matplotlib
Pour résumer, dans ce tutoriel, nous avons exploré :
ce qu’est un diagramme de Gantt
les informations qu’il affiche
quand l’utiliser
les différentes manières et nuances pour créer des diagrammes de Gantt avec matplotlib
comment créer un diagramme de Gantt en Python avec matplotlib
comment le personnaliser pour le rendre plus instructif
comment interpréter le résultat final.
Nous avons également parcouru différents exemples et les étapes pour les construire.
Pour une approche plus complète de la création de graphiques percutants et informatifs en Python, découvrez notre parcours de compétences Data Visualization with Python.
Découvrez les fonctions et méthodes des listes Python. Veuillez suivre les exemples de code pour list() et d'autres fonctions et méthodes Python dès maintenant.
Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Apprenez à diviser des listes Python à l'aide de techniques telles que le découpage, les compréhensions de listes et itertools. Veuillez découvrir quand utiliser chaque méthode pour une gestion optimale des données.
Dans ce guide pas à pas, nous verrons ce qu’est un diagramme de Gantt, pourquoi et quand ces visualisations sont utiles, comment créer un diagramme de Gantt en Python avec matplotlib, et comment le personnaliser. Au passage, nous construirons quelques exemples de diagrammes de Gantt avec matplotlib.
Qu’est-ce qu’un diagramme de Gantt et pourquoi est-il utile ?
Un diagramme de Gantt est un type d’histogramme (barres) utilisé pour représenter un planning de projet complet et son pilotage. Il affiche généralement les éléments suivants : le nom des tâches, leurs dates de début et de fin, les équipes en charge, l’avancement de la tâche en pourcentage ou en fraction, la performance par équipe, ainsi que les jalons clés du projet.
Les noms des tâches sont disposés sur l’axe des ordonnées (y), le plus souvent triés par date de début, dans l’ordre chronologique de haut en bas. L’axe des abscisses (x) représente quant à lui le temps, la largeur de chaque barre correspondant à la durée d’exécution de la tâche.
Puisqu’un diagramme de Gantt n’est, au fond, qu’une variante d’un histogramme horizontal, on peut le créer avec de nombreuses bibliothèques de visualisation Python, notamment matplotlib, Plotly, Bokeh et Altair. Dans ce tutoriel, nous nous concentrerons sur matplotlib, la plus utilisée.
Si vous souhaitez explorer d’autres façons de créer un diagramme de Gantt et d’autres types de graphiques en Python, découvrez le cours Introduction to Data Visualization with Plotly in Python. Pour réviser ou développer vos compétences matplotlib, ces cours vous seront utiles : Introduction to Data Visualization with Matplotlib et Python for MATLAB Users.
Comment créer un diagramme de Gantt en Python avec Matplotlib
Utiliser barh()
Commençons par construire un diagramme de Gantt basique avec matplotlib à l’aide de la méthode
barh()dematplotlib.pyplot.Nous devons d’abord importer les bibliothèques nécessaires :
Ensuite, créons des données factices pour travailler :
Sortie :
Pour faciliter la construction d’un diagramme de Gantt avec ces données, calculons quatre colonnes supplémentaires représentant les informations suivantes :
Vérifions le résultat :
Sortie :
Nous sommes maintenant prêts à générer un diagramme de Gantt basique avec matplotlib :
Sortie :
Ce graphique nécessite plusieurs ajustements pour en tirer un maximum d’informations :
Nous allons implémenter ces améliorations dans un instant. Avant cela, voyons comment gérer la création d’un diagramme de Gantt basique.
Utiliser
broken_barh()Lorsque certaines tâches comportent plusieurs sous-tâches réparties dans le temps, il est préférable d’utiliser une autre méthode matplotlib :
broken_barh().Pour disposer de données factices et tester cette approche, procédons ainsi :
completion_frac).startetendenstart_1etend_1(par commodité).Sortie :
Notez que la tâche D comporte désormais deux sous-tâches, la tâche H en a trois, et les tâches C et K ont chacune une sous-tâche. Les tâches D et H sont donc celles pour lesquelles nous allons utiliser la méthode
broken_barh(). Sa syntaxe étant un peu moins intuitive que celle debarh(), passons en revue ses paramètres principaux. Les paramètres obligatoires debroken_barh()sont :xranges: une séquence de tuples au format (xmin,xwidth) indiquant le début et l’étendue de chaque barre. Chaque barre représente une sous-tâche : ce paramètre encode donc la date de début et la durée de chaque sous-tâche.yrange: un tuple au format (ymin,yheight) indiquant la position en y et la hauteur de chaque barre.Traçons maintenant notre diagramme de Gantt « morcelé ». L’algorithme est le suivant :
barh()comme précédemment.broken_barh().broken_barh().Sortie :
Dans le code ci-dessus, on peut aussi utiliser
broken_barh()pour tracer les barres des tâches à une seule sous-tâche. Il suffit de remplacer cette ligne :par celle-ci :
Cette approche rend aussi le code plus homogène et plus lisible.
Comment personnaliser un diagramme de Gantt avec Matplotlib
Revenons à notre dataframe initial :
Sortie :
et à notre premier diagramme de Gantt :
Sortie :
Nous souhaitons maintenant personnaliser ce graphique pour le rendre plus parlant.
Pour aller plus loin dans la personnalisation avec matplotlib, consultez : Matplotlib Tutorial: Python Plotting et Matplotlib Cheat Sheet: Plotting in Python.
Ajustements de base d’un diagramme de Gantt
Ils incluent :
Ajouter un titre
Un titre explicite est indispensable pour tout graphique, y compris un diagramme de Gantt. Supposons que notre projet s’appelle Project X :
Sortie :
Ajuster et personnaliser les axes et ajouter une grille
À cette étape, nous allons reprendre le code précédent et réaliser les actions suivantes :
ax.Sortie :
Si vous souhaitez pratiquer davantage pour lire et écrire du code Python aisément, notre cours Intermediate Python est une bonne base de référence.
Colorer les tâches par équipe
Colorons maintenant chaque barre (chaque tâche) selon l’équipe à laquelle elle est affectée. Pour cela, nous allons :
Sortie :
Ajouter une légende
Il manque une légende indiquant quelle couleur correspond à quelle équipe. Pour y remédier, créons des « patches » — des objets 2D matplotlib remplis d’une couleur prédéfinie. Nous utiliserons la classe matplotlib.patches.Patch pour générer une liste de patches, un par équipe, avec la couleur appropriée :
Nous pouvons maintenant ajouter la légende au graphique :
Sortie :
Le diagramme de Gantt ci-dessus est nettement plus informatif.
Vous trouverez d’autres techniques pour améliorer l’esthétique et la lisibilité des graphiques dans le cours Improving Your Data Visualizations in Python.
Ajouter le statut d’avancement
Jusqu’ici, nous n’avons pas utilisé la colonne
completion_dayscalculée au début. Utilisons-la maintenant pour rendre le diagramme plus instructif en affichant le niveau d’avancement de chaque tâche.Techniquement, nous allons superposer une seconde barre sur chacune des barres existantes. La barre inférieure représentera la durée totale de la tâche (jours alloués), tandis que la barre supérieure correspondra au statut d’avancement (jours réalisés/alloués).
Pour chaque tâche, les deux barres auront la même couleur (celle de l’équipe), mais la barre inférieure sera plus claire afin de distinguer visuellement les deux.
Autrement dit, si une équipe surperforme sur une tâche, la combinaison des deux barres indiquera qu’elle a déjà travaillé plus de jours que prévu sur cette tâche (signe d’une probable finalisation avant la date limite).
À l’inverse, si une équipe sous-performe, la combinaison des barres montrera qu’elle a travaillé moins de jours que prévu (la tâche risque d’être finalisée après l’échéance).
Sortie :
On voit que les équipes n’avancent pas toutes au même rythme, ce qui est courant dans les projets réels. Pour en tirer davantage d’enseignements, supposons que la date du jour est le 17 novembre 2022 et marquons-la sur le graphique :
Sortie :
On peut tirer les observations suivantes sur l’état actuel de Project X :
Ces constats aident les leads et le chef de projet à ajuster le planning et à allouer les ressources nécessaires au bon moment pour éviter les retards sur les livrables.
Autres ajustements possibles
On peut enrichir davantage notre diagramme de Gantt matplotlib. Par exemple :
Veillez toutefois à garder le diagramme lisible et à éviter de le surcharger. Comme pour toute visualisation, il s’agit de trouver le bon équilibre entre richesse d’information, lisibilité du graphique et clarté du code qui le génère.
Créez votre propre diagramme de Gantt en Python avec Matplotlib
Pour résumer, dans ce tutoriel, nous avons exploré :
Nous avons également parcouru différents exemples et les étapes pour les construire.
Pour une approche plus complète de la création de graphiques percutants et informatifs en Python, découvrez notre parcours de compétences Data Visualization with Python.