GUIDE PRATIQUE : CRÉER VOS GRAPHIQUES
Tutoriel pas à pas avec code Python
Introduction
Pourquoi faire vos propres graphiques ?
Faire vos propres graphiques plutôt que de dépendre de logiciels avec interface graphique
(Excel, GraphPad) vous permet de : (1) comprendre exactement ce que vous représentez, (2)
reproduire vos analyses si nécessaire, (3) générer rapidement plusieurs variantes sans cliquer, et
(4) maintenir une trace écrite de vos choix (le code = documentation).
Outil utilisé : Python
Python est gratuit, puissant, et idéal pour la science des données. Nous utilisons deux bibliothèques
clés : matplotlib (dessiner les graphes) et numpy (calculer statistiques).
Étape 0 : Installation
1. Installez Python
Téléchargez depuis [Link] (version 3.10 ou plus récente). Sur Windows, cochez « Add
Python to PATH » pendant l'installation.
2. Installez les bibliothèques requises
Ouvrez le terminal (Cmd sur Windows, Terminal sur Mac/Linux) et tapez :
pip install matplotlib numpy scipy
Étape 1 : Préparer les données
Voici vos données CMI (ppm) pour les trois essais :
Espèce Essai 1 Essai 2 Essai 3
A. flavus 1024 1024 512
A. niger 512 512 256
A. ochraceus 256 256 128
Code Python pour créer les données :
import numpy as np import [Link] as plt # Créer un dictionnaire avec les
données des 3 essais data_trials = { 'A. flavus': [1024, 1024, 512], 'A.
niger': [512, 512, 256], 'A. ochraceus': [256, 256, 128] } # Extraire les noms
d'espèces species = ['A. flavus', 'A. niger', 'A. ochraceus']
Étape 2 : Calculer moyenne et écart-type
La moyenne est la valeur centrale, l'écart-type mesure la variabilité entre les essais.
# Calculer moyennes et écarts-types means = [] sds = [] for sp in species: #
[Link]() = moyenne # [Link](..., ddof=1) = écart-type (ddof=1 car on a 3
valeurs) mean = [Link](data_trials[sp]) sd = [Link](data_trials[sp],
ddof=1) [Link](mean) [Link](sd) print(f"{sp}: {mean:.1f} ±
{sd:.1f}")
Résultat attendu :
A. flavus: 853.3 ± 295.6 A. niger: 426.7 ± 147.8 A. ochraceus: 213.3 ± 73.9
Étape 3 : Créer le graphique en barres
Ceci est le cœur : tracer les barres avec les valeurs, les barres d'erreur (écart-types), et les lettres de
Tukey.
# Créer la figure et l'axe fig, ax = [Link](figsize=(10, 6)) # Couleurs pour
chaque barre colors = ['#E74C3C', '#F39C12', '#27AE60'] # Tracer les barres avec
écarts-types # yerr = barres d'erreur (écarts-types) # capsize = longueur des caps
horizontaux bars = [Link](species, means, yerr=sds, capsize=8,
color=colors, alpha=0.8, edgecolor='black', linewidth=1.5, width=0.6) # Ajouter
étiquettes et titre ax.set_ylabel('CMI (ppm)', fontsize=13, fontweight='bold')
ax.set_xlabel('Espèce', fontsize=13, fontweight='bold') ax.set_title('Sensibilité à
l\'huile essentielle\nde clou de girofle', fontsize=13, fontweight='bold') #
Ajouter une grille légère [Link](axis='y', alpha=0.3, linestyle='--')
Étape 4 : Ajouter les lettres de Tukey
Les lettres viennent de votre test statistique (Tukey HSD). Ici : a pour A. flavus, ab pour A. niger, b pour
A. ochraceus.
# Lettres de Tukey basées sur le test statistique letters = ['a', 'ab', 'b'] #
Parcourir chaque barre et ajouter valeur + lettre for i, (bar, mean, sd, letter) in
enumerate(zip(bars, means, sds, letters)): # Ajouter la valeur numérique au-
dessus [Link](bar.get_x() + bar.get_width()/2., mean + sd + 40,
f'{mean:.1f} ± {sd:.1f}', ha='center', va='bottom', fontsize=11,
fontweight='bold') # Ajouter la lettre de Tukey en grand, dans un cercle
noir [Link](bar.get_x() + bar.get_width()/2., mean + sd + 120,
letter, ha='center', va='bottom', fontsize=16, fontweight='bold',
color='white', bbox=dict(boxstyle='circle', facecolor='black',
linewidth=1.5))
Étape 5 : Sauvegarder et afficher
# Ajuster l'espacement automatiquement plt.tight_layout() # Sauvegarder en haute
résolution (300 dpi = impression) [Link]('mon_graphique_cmi.png', dpi=300,
bbox_inches='tight') # Afficher le graphique à l'écran [Link]() # Fermer la
figure pour libérer la mémoire [Link]()
Code complet (copier-coller)
Voici le code complet à copier dans un fichier Python (.py) ou un notebook Jupyter :
import numpy as np import [Link] as plt # ==================== DONNÉES
==================== data_trials = { 'A. flavus': [1024, 1024, 512], 'A.
niger': [512, 512, 256], 'A. ochraceus': [256, 256, 128] } species = ['A.
flavus', 'A. niger', 'A. ochraceus'] letters = ['a', 'ab', 'b'] #
==================== STATISTIQUES ==================== means = [] sds = [] for sp
in species: mean = [Link](data_trials[sp]) sd = [Link](data_trials[sp],
ddof=1) [Link](mean) [Link](sd) # ==================== GRAPHIQUE
==================== fig, ax = [Link](figsize=(10, 6)) colors = ['#E74C3C',
'#F39C12', '#27AE60'] bars = [Link](species, means, yerr=sds, capsize=8,
color=colors, alpha=0.8, edgecolor='black', linewidth=1.5, width=0.6)
ax.set_ylabel('CMI (ppm)', fontsize=13, fontweight='bold') ax.set_xlabel('Espèce',
fontsize=13, fontweight='bold') ax.set_title('Sensibilité antifongique',
fontsize=13, fontweight='bold') [Link](axis='y', alpha=0.3, linestyle='--') #
==================== LETTRES ==================== for bar, mean, sd, letter in
zip(bars, means, sds, letters): [Link](bar.get_x() + bar.get_width()/2., mean +
sd + 40, f'{mean:.1f} ± {sd:.1f}', ha='center', va='bottom',
fontsize=11, fontweight='bold') [Link](bar.get_x() + bar.get_width()/2., mean +
sd + 120, letter, ha='center', va='bottom', fontsize=16,
fontweight='bold', color='white', bbox=dict(boxstyle='circle',
facecolor='black', linewidth=1.5)) plt.tight_layout()
[Link]('mon_graphique_cmi.png', dpi=300, bbox_inches='tight') [Link]()
Notes pratiques
• Modifier les couleurs : Changez '#E74C3C' par d'autres codes hexadécimaux (Google « hex color
picker »)
• Changer les tailles : fontsize=13 pour l'axe Y, figsize=(10, 6) pour la taille globale
• Ajouter plus d'espèces : Ajoutez une clé au dictionnaire et une lettre à la liste, c'est tout
• dpi=300 pour imprimer : Le PNG sera flou sur écran mais parfait à l'impression. Pour l'écran,
utilisez dpi=100