Comment créer des graphiques dans Excel avec Python
Les graphiques transforment les données brutes d’une feuille de calcul en informations visuelles. Aspose.Cells FOSS for Python vous permet de créer des graphiques en colonnes, en lignes, à barres et en secteurs de manière programmatique, avec un contrôle total sur les séries de données, les libellés de catégorie, le titre du graphique et la position, sans nécessiter Microsoft Excel.
Pourquoi créer des graphiques avec Aspose.Cells FOSS ?
- Pas besoin d’Excel : Créez des graphiques entièrement en Python, sur n’importe quel OS.
- API méthode-par-type : Utilisez
add_bar(),add_line(),add_pie(),add_area(), et plus — une méthode par type de graphique. - Séries nommées : Configurez chaque série avec les arguments mot‑clé
name=,category_data=. - Placement précis : Contrôlez les limites du graphique par les coordonnées de cellules (top_row, left_col, bottom_row, right_col).
Guide étape par étape
Étape 1 : Installer Aspose.Cells FOSS pour Python
pip install aspose-cells-fossÉtape 2 : Créer un classeur et remplir les données
Créez un nouveau classeur et écrivez des données numériques ainsi que des libellés de catégorie dans les cellules :
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Data"
##Category labels in column A (rows 2-5, leaving row 1 for a header)
ws.cells["A1"].value = "Quarter"
ws.cells["A2"].value = "Q1"
ws.cells["A3"].value = "Q2"
ws.cells["A4"].value = "Q3"
ws.cells["A5"].value = "Q4"
##Revenue series in column B
ws.cells["B1"].value = "Revenue"
ws.cells["B2"].value = 50000
ws.cells["B3"].value = 62000
ws.cells["B4"].value = 71000
ws.cells["B5"].value = 89000
##Expense series in column C
ws.cells["C1"].value = "Expenses"
ws.cells["C2"].value = 32000
ws.cells["C3"].value = 38000
ws.cells["C4"].value = 41000
ws.cells["C5"].value = 47000Étape 3 : Ajouter un graphique en colonnes
Utilisez ws.charts.add_bar(top_row, left_col, bottom_row, right_col) pour insérer un graphique en colonnes. La méthode renvoie directement un objet graphique :
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Les indices de ligne et de colonne commencent à zéro.
Étape 4 : Configurer la série de données
Ajoutez chaque série de données en utilisant chart.n_series.add() avec des arguments nommés :
##Add Revenue series
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
##Add Expenses series
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")L’argument category_data spécifie la plage de cellules pour les étiquettes de l’axe des x. L’argument name définit l’étiquette de légende de la série.
Étape 5 : définir le titre du graphique et les données de catégorie
Définissez le titre du graphique comme une chaîne simple :
chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5" # x-axis labels at chart level
chart.show_legend = True
chart.legend_position = "bottom"Étape 6 : Enregistrer le classeur
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Exemple complet de diagramme à colonnes :
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Data
labels = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
for i, (label, rev, exp) in enumerate(zip(labels, revenue, expenses), start=2):
ws.cells[f"A{i}"].value = label
ws.cells[f"B{i}"].value = rev
ws.cells[f"C{i}"].value = exp
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("quarterly_chart.xlsx")Étape 7 : Créer un graphique en courbes
Le même modèle fonctionne pour add_line() :
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = [42000, 47500, 53000, 49000, 61000, 68000]
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Revenue"
for i, (m, r) in enumerate(zip(months, revenue), start=2):
ws.cells[f"A{i}"].value = m
ws.cells[f"B{i}"].value = r
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue Trend"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Revenue")
chart.show_legend = True
workbook.save("trend_chart.xlsx")Problèmes courants et solutions
1. Le graphique apparaît vide ou blanc
Cause: La plage de données transmise à n_series.add() ne contient pas de valeurs, ou la chaîne de plage de cellules est incorrecte.
Fix: Vérifiez que la plage de cellules correspond à vos données. Vérifiez que ws.cells["B2"].value n’est pas None.
2. Les libellés de catégorie n’apparaissent pas sur l’axe des x
Cause : chart.category_data n’a pas été défini, ou la plage pointe vers des cellules vides.
Fix : Définissez chart.category_data = "A2:A5" où la colonne A contient vos chaînes d’étiquettes.
3. Chevauchement de la position du graphique avec les données
Cause: Les limites de ligne dans add_bar() chevauchent la zone de données.
Fix: Placez le graphique sous les données : ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Cause: La bibliothèque FOSS utilise une API méthode‑par‑type, pas add(ChartType.COLUMN, ...).
Fix: Utilisez ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...), ou ws.charts.add_area(...).
Foire aux questions
Quels types de graphiques sont pris en charge ?
Utilisez add_bar(), add_line(), add_pie(), add_area() et add_stock() pour les types les plus courants. Ces cinq offrent une prise en charge complète de la sérialisation XML. Consultez la classe ChartCollection pour la liste complète des méthodes add_* disponibles.
Puis-je créer des graphiques dans un fichier Excel existant ?
Oui. Chargez le classeur avec Workbook("existing.xlsx"), accédez à la feuille cible et ajoutez un graphique en utilisant la méthode ws.charts.add_*() appropriée.
Comment définir le titre du graphique ?
Attribuez une chaîne simple : chart.title = "My Chart Title". Il n’existe aucune sous‑propriété .text : le titre est la chaîne elle‑même.
Cette approche est‑elle compatible avec pandas ?
Oui. Écrivez les valeurs du DataFrame pandas dans les cellules dans une boucle, puis ajoutez un graphique sur cette plage de données.
Ressources associées :