Travailler avec des graphiques
Une nouvelle méthode insert_chart a été ajoutée à la classe DocumentBuilder. Voyons donc comment insérer un simple histogramme dans le document à l’aide de la méthode DocumentBuilder.insert_chart:
Comment insérer un graphique
Dans cette section, nous apprendrons comment insérer un graphique dans un document.
Insérer un histogramme
L’exemple de code suivant montre comment insérer un histogramme:
Le code produit le résultat suivant:
Il existe des méthodes add, add_double et add_date, qui ont été exposées pour couvrir toutes les variantes possibles de sources de données pour tous les types de graphiques:
Le code produit le résultat suivant:
Insérer un graphique à nuages de points
L’exemple ci-dessous montre comment insérer un graphique à nuages de points.
Le code produit le résultat suivant:
Insérer un graphique en aires
L’exemple de code suivant montre comment insérer un graphique en aires:
Le code produit le résultat suivant:
Insérer un graphique à bulles
L’exemple de code suivant montre comment insérer un graphique à bulles:
Le code produit le résultat suivant:
Travailler avec des graphiques via l’objet Shape.chart
Une fois le graphique inséré et rempli de données, vous pouvez modifier son apparence. La propriété Shape.chart contient toutes les options liées aux graphiques disponibles via le API public.
Par exemple, modifions le comportement du titre ou de la légende Chart:
Le code génère les résultats suivants:
Comment travailler avec ChartSeriesCollection de graphiques
Examinons la collection ChartSeries. Toutes les séries de graphiques sont disponibles via la collection Chart.series:
Vous pouvez supprimer les séries une par une ou toutes les effacer ainsi qu’en ajouter une nouvelle si nécessaire. Le graphique nouvellement inséré comporte des séries par défaut ajoutées à cette collection. Pour les supprimer, vous devez appeler la méthode chart.series.clear().
Travailler avec une seule classe ChartSeries
Voici comment travailler avec une série particulière.
Veuillez voir le résultat ci-dessous:
Tous les ChartSeries uniques ont des options ChartDataPoint par défaut, veuillez essayer d’utiliser le code suivant pour les modifier:
Veuillez voir le résultat ci-dessous:
Comment travailler avec un seul ChartDataPoint d’un ChartSeries
À l’aide de ChartDataPoint, vous pouvez personnaliser le formatage d’un seul point de données de la série de graphiques:
Veuillez voir le résultat ci-dessous:
Comment travailler avec ChartDataLabel d’une seule ChartSeries
En utilisant ChartDataLabel, vous pouvez spécifier le formatage d’une seule étiquette de données de la série de graphiques, comme afficher/masquer LegendKey, CategoryName, SeriesName, Value, etc.
Veuillez voir le résultat ci-dessous:
Comment définir les options par défaut pour ChartDataLabels de ChartSeries
La classe ChartDataLabelCollection définit des propriétés qui peuvent être utilisées pour définir les options par défaut pour ChartDataLabels pour Chart Series. Ces propriétés incluent show_category_name, show_bubble_size, show_percentage, show_series_name, show_value, etc.
Veuillez voir le résultat ci-dessous:
Comment formater l’étiquette du numéro de données du graphique
En utilisant ChartDataLabel.number_format, vous pouvez spécifier le formatage numérique d’une seule étiquette de données du graphique.
L’exemple de code suivant montre comment formater un numéro de l’étiquette de données:
Comment définir les propriétés de l’axe du graphique
Si vous souhaitez travailler avec l’axe du graphique, la mise à l’échelle et les unités d’affichage pour l’axe des valeurs, veuillez utiliser les classes ChartAxis, AxisDisplayUnit et AxisScaling.
L’exemple de code suivant montre comment définir les propriétés des axes X et Y:
Comment définir la valeur temporelle Date de l’axe
L’exemple de code suivant montre comment définir les valeurs de date/heure sur les propriétés de l’axe:
Comment formater la valeur numérique de l’axe
L’exemple de code suivant montre comment modifier le format des nombres sur l’axe des valeurs:
Comment définir les limites de l’axe
La classe AxisBound représente une limite minimale ou maximale des valeurs d’axe. La limite peut être spécifiée sous la forme d’une valeur numérique, date-heure ou d’une valeur “auto” spéciale.
L’exemple de code suivant montre comment définir les limites d’un axe:
Comment définir l’unité d’intervalle entre les étiquettes
L’exemple de code suivant montre comment définir l’unité d’intervalle entre les étiquettes sur un axe:
Comment masquer l’axe du graphique
Si vous souhaitez afficher ou masquer l’axe du graphique, vous pouvez simplement y parvenir en définissant la valeur de la propriété ChartAxis.hidden.
L’exemple de code suivant montre comment masquer l’axe Y du graphique:
Comment aligner l’étiquette du graphique
Si vous souhaitez définir un alignement de texte pour les étiquettes multilignes, vous pouvez simplement y parvenir en définissant la valeur de la propriété ChartAxis.tick_label_alignment.
L’exemple de code suivant montre comment cocher l’alignement des étiquettes:
Comment définir le formatage du remplissage et du contour
Le formatage du remplissage et du contour peut être défini pour les séries de graphiques, les points de données et les marqueurs. Pour ce faire, vous devez utiliser les propriétés de type ChartFormat dans les classes ChartSeries, ChartDataPoint et ChartMarker, ainsi que des alias pour certaines propriétés, telles que fore_color, back_color, visible et transparency dans la classe Stroke.
L’exemple de code suivant montre comment définir la couleur de la série:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
seriesColl = chart.series
# Delete default generated series.
seriesColl.clear()
# Create category names array.
categories = [ "AW Category 1", "AW Category 2" ]
# Adding new series. Value and category arrays must be the same size.
series1 = seriesColl.add("AW Series 1", categories, [ 1, 2 ])
series2 = seriesColl.add("AW Series 2", categories, [ 3, 4 ])
series3 = seriesColl.add("AW Series 3", categories, [ 5, 6 ])
# Set series color.
series1.format.fill.fore_color = drawing.Color.red
series2.format.fill.fore_color = drawing.Color.yellow
series3.format.fill.fore_color = drawing.Color.blue
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.set_series_color.docx")
L’exemple de code suivant montre comment définir la couleur et l’épaisseur des lignes:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.LINE, 432, 252)
chart = shape.chart
seriesColl = chart.series
# Delete default generated series.
seriesColl.clear()
# Adding new series.
series1 = seriesColl.add_double("AW Series 1", [ 0.7, 1.8, 2.6 ], [ 2.7, 3.2, 0.8 ])
series2 = seriesColl.add_double("AW Series 2", [ 0.5, 1.5, 2.5 ], [ 3, 1, 2 ])
# Set series color.
series1.format.stroke.fore_color = drawing.Color.red
series1.format.stroke.weight = 5
series2.format.stroke.fore_color = drawing.Color.light_green
series2.format.stroke.weight = 5
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.line_color_and_weight.docx")