Arbeiten mit Diagrammen

Der DocumentBuilder-Klasse wurde eine neue insert_chart-Methode hinzugefügt. Sehen wir uns also an, wie man mithilfe der DocumentBuilder.insert_chart-Methode ein einfaches Säulendiagramm in das Dokument einfügt:

So fügen Sie ein Diagramm ein

In diesem Abschnitt erfahren Sie, wie Sie ein Diagramm in ein Dokument einfügen.

Säulendiagramm einfügen

Das folgende Codebeispiel zeigt, wie man ein Säulendiagramm einfügt:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# You can specify different chart types and sizes.
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
seriesColl = chart.series
print(seriesColl.count)
# Delete default generated series.
seriesColl.clear()
# Create category names array, in this example we have two categories.
categories = [ "Category 1", "Category 2" ]
# Please note, data arrays must not be empty and arrays must be the same size.
seriesColl.add("Aspose Series 1", categories, [ 1, 2 ])
seriesColl.add("Aspose Series 2", categories, [ 3, 4 ])
seriesColl.add("Aspose Series 3", categories, [ 5, 6 ])
seriesColl.add("Aspose Series 4", categories, [ 7, 8 ])
seriesColl.add("Aspose Series 5", categories, [ 9, 10 ])
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.insert_simple_column_chart.docx")

Der Code erzeugt das folgende Ergebnis:

create-column-chart-aspose-words-net

Es gibt add-, add_double- und add_date-Methoden, die alle möglichen Varianten von Datenquellen für alle Diagrammtypen abdecken:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
chart.series.add("Aspose Series 1", [ "Category 1", "Category 2" ], [ 1, 2 ])
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.insert_column_chart.docx")

Der Code erzeugt das folgende Ergebnis:

create-column-chart-from-datasource-aspose-words-net

Streudiagramm einfügen

Das folgende Beispiel zeigt, wie ein Streudiagramm eingefügt wird.

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.SCATTER, 432, 252)
chart = shape.chart
chart.series.add_double("Aspose Series 1", [ 0.7, 1.8, 2.6 ], [ 2.7, 3.2, 0.8 ])
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.insert_scatter_chart.docx")

Der Code erzeugt das folgende Ergebnis:

scatter-chart-aspose-words-net

Flächendiagramm einfügen

Das folgende Codebeispiel zeigt, wie ein Flächendiagramm eingefügt wird:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.AREA, 432, 252)
chart = shape.chart
chart.series.add_date("Aspose Series 1",
[ date(2002, 5, 1), date(2002, 6, 1), date(2002, 7, 1), date(2002, 8, 1), date(2002, 9, 1) ],
[ 32, 32, 28, 12, 15 ])
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.insert_area_chart.docx")

Der Code erzeugt das folgende Ergebnis:

area-chart-aspose-words-net

Blasendiagramm einfügen

Das folgende Codebeispiel zeigt, wie man ein Blasendiagramm einfügt:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.BUBBLE, 432, 252)
chart = shape.chart
chart.series.add("Aspose Series 1", [ 0.7, 1.8, 2.6 ], [ 2.7, 3.2, 0.8 ], [ 10, 4, 8 ])
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.insert_bubble_chart.docx")

Der Code erzeugt das folgende Ergebnis:

bubble-chart-aspose-words-net

Arbeiten mit Diagrammen über das Shape.chart-Objekt

Sobald das Diagramm eingefügt und mit Daten gefüllt wurde, können Sie sein Erscheinungsbild ändern. Die Shape.chart-Eigenschaft enthält alle diagrammbezogenen Optionen, die über das öffentliche API verfügbar sind.

Lassen Sie uns beispielsweise das Verhalten von Chart-Titeln oder -Legenden ändern:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.LINE, 432, 252)
chart = shape.chart
chart.title.show = True
chart.title.text = "Line Chart Title"
chart.title.overlay = False
# Please note if None or empty value is specified as title text, auto generated title will be shown.
chart.legend.position = aw.drawing.charts.LegendPosition.LEFT
chart.legend.overlay = True
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.create_chart_using_shape.docx")

Der Code generiert die folgenden Ergebnisse:

line-chart-aspose-words-net

So arbeiten Sie mit ChartSeriesCollection of Chart

Schauen wir uns die ChartSeries-Sammlung an. Alle Diagrammserien sind über die Chart.series-Sammlung verfügbar:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
seriesColl = chart.series
print(seriesColl.count)

Sie können Serien einzeln oder alle löschen und bei Bedarf eine neue hinzufügen. Dem neu eingefügten Diagramm wurden dieser Sammlung einige Standardreihen hinzugefügt. Um sie zu entfernen, müssen Sie die chart.series.clear()-Methode aufrufen.

Arbeiten mit der Single ChartSeries-Klasse

Hier erfahren Sie, wie Sie mit einer bestimmten Serie arbeiten.

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
series0 = chart.series[0]
series1 = chart.series[1]
series0.name = "Chart Series Name 1"
series1.name = "Chart Series Name 2"
# You can also specify whether the line connecting the points on the chart shall be smoothed using Catmull-Rom splines.
series0.smooth = True
series1.smooth = True

Bitte sehen Sie sich das Ergebnis unten an:

line-chart-chartseries-aspose-words-net

Alle einzelnen ChartSeries-Dateien verfügen über standardmäßige ChartDataPoint-Optionen. Versuchen Sie bitte, diese mit dem folgenden Code zu ändern:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
# Specifies whether by default the parent element shall inverts its colors if the value is negative.
series0.invert_if_negative = True
series0.marker.symbol = aw.drawing.charts.MarkerSymbol.CIRCLE
series0.marker.size = 15
series1.marker.symbol = aw.drawing.charts.MarkerSymbol.STAR
series1.marker.size = 10

Bitte sehen Sie sich das Ergebnis unten an:

line-chart-chartdatapoint-aspose-words-net

So arbeiten Sie mit einem einzelnen ChartDataPoint eines ChartSeries

Mit ChartDataPoint können Sie die Formatierung eines einzelnen Datenpunkts der Diagrammreihe anpassen:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.LINE, 432, 252)
chart = shape.chart
series0 = chart.series[0]
series1 = chart.series[1]
dataPointCollection = series0.data_points
dataPoint00 = dataPointCollection[0]
dataPoint01 = dataPointCollection[1]
dataPoint00.explosion = 50
dataPoint00.marker.symbol = aw.drawing.charts.MarkerSymbol.CIRCLE
dataPoint00.marker.size = 15
dataPoint01.marker.symbol = aw.drawing.charts.MarkerSymbol.DIAMOND
dataPoint01.marker.size = 20
dataPoint12 = series1.data_points[2]
dataPoint12.invert_if_negative = True
dataPoint12.marker.symbol = aw.drawing.charts.MarkerSymbol.STAR
dataPoint12.marker.size = 20
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.single_chart_data_point.docx")

Bitte sehen Sie sich das Ergebnis unten an:

line-chart-datapoint-aspose-words-net

So arbeiten Sie mit ChartDataLabel einer einzelnen ChartSeries

Mit ChartDataLabel können Sie die Formatierung einer einzelnen Datenbeschriftung der Diagrammreihe festlegen, z. B. LegendKey, CategoryName, SeriesName, Value usw. ein-/ausblenden.

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.BAR, 432, 252)
chart = shape.chart
series0 = shape.chart.series[0]
labels = series0.data_labels
labels.show_legend_key = True
# By default, when you add data labels to the data points in a pie chart, leader lines are displayed for data labels that are
# positioned far outside the end of data points. Leader lines create a visual connection between a data label and its
# corresponding data point.
labels.show_leader_lines = True
labels.show_category_name = False
labels.show_percentage = False
labels.show_series_name = True
labels.show_value = True
labels.separator = "/"
labels.show_value = True
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.chart_data_label.docx")

Bitte sehen Sie sich das Ergebnis unten an:

bar-chart-aspose-words-net

So definieren Sie Standardoptionen für ChartDataLabels von ChartSeries

Die ChartDataLabelCollection-Klasse definiert Eigenschaften, die zum Festlegen von Standardoptionen für ChartDataLabels für Diagrammreihen verwendet werden können. Zu diesen Eigenschaften gehören show_category_name, show_bubble_size, show_percentage, show_series_name, show_value usw.

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.PIE, 432, 252)
chart = shape.chart
chart.series.clear()
series = chart.series.add("Aspose Series 1",
[ "Category 1", "Category 2", "Category 3" ],
[ 2.7, 3.2, 0.8 ])
labels = series.data_labels
labels.show_percentage = True
labels.show_value = True
labels.show_leader_lines = False
labels.separator = " - "
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.default_options_for_data_labels.docx")

Bitte sehen Sie sich das Ergebnis unten an:

pie-chart-aspose-words-net

So formatieren Sie die Nummer der Diagrammdatenbeschriftung

Mit ChartDataLabel.number_format können Sie die Zahlenformatierung einer einzelnen Datenbeschriftung des Diagramms festlegen.

Das folgende Codebeispiel zeigt, wie eine Nummer der Datenbeschriftung formatiert wird:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.LINE, 432, 252)
chart = shape.chart
chart.title.text = "Data Labels With Different Number Format"
# Delete default generated series.
chart.series.clear()
series1 = chart.series.add("Aspose Series 1", [ "Category 1", "Category 2", "Category 3" ], [ 2.5, 1.5, 3.5 ])
series1.has_data_labels = True
series1.data_labels.show_value = True
series1.data_labels[0].number_format.format_code = "\"$\"#,##0.00"
series1.data_labels[1].number_format.format_code = "dd/mm/yyyy"
series1.data_labels[2].number_format.format_code = "0.00%"
# Or you can set format code to be linked to a source cell,
# in this case NumberFormat will be reset to general and inherited from a source cell.
series1.data_labels[2].number_format.is_linked_to_source = True
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.format_number_of_data_label.docx")

So legen Sie die Eigenschaften der Diagrammachse fest

Wenn Sie mit Diagrammachsen, Skalierungen und Anzeigeeinheiten für die Werteachse arbeiten möchten, verwenden Sie bitte die Klassen ChartAxis, AxisDisplayUnit und AxisScaling.

Das folgende Codebeispiel zeigt, wie X- und Y-Achseneigenschaften definiert werden:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# Insert chart
shape = builder.insert_chart(aw.drawing.charts.ChartType.AREA, 432, 252)
chart = shape.chart
chart.series.clear()
chart.series.add_date("Aspose Series 1",
[ date(2002, 1, 1), date(2002, 6, 1), date(2002, 7, 1), date(2002, 8, 1), date(2002, 9, 1) ],
[ 640, 320, 280, 120, 150 ])
xAxis = chart.axis_x
yAxis = chart.axis_y
# Change the X axis to be category instead of date, so all the points will be put with equal interval on the X axis.
xAxis.category_type = aw.drawing.charts.AxisCategoryType.CATEGORY
xAxis.crosses = aw.drawing.charts.AxisCrosses.CUSTOM
xAxis.crosses_at = 3 # Measured in display units of the Y axis (hundreds).
xAxis.reverse_order = True
xAxis.major_tick_mark = aw.drawing.charts.AxisTickMark.CROSS
xAxis.minor_tick_mark = aw.drawing.charts.AxisTickMark.OUTSIDE
xAxis.tick_label_offset = 200
yAxis.tick_label_position = aw.drawing.charts.AxisTickLabelPosition.HIGH
yAxis.major_unit = 100
yAxis.minor_unit = 50
yAxis.display_unit.unit = aw.drawing.charts.AxisBuiltInUnit.HUNDREDS
yAxis.scaling.minimum = aw.drawing.charts.AxisBound(100)
yAxis.scaling.maximum = aw.drawing.charts.AxisBound(700)
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.define_xy_axis_properties.docx")

So legen Sie den Date-Zeitwert der Achse fest

Das folgende Codebeispiel zeigt, wie Datums-/Uhrzeitwerte für Achseneigenschaften festgelegt werden:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
chart.series.clear()
chart.series.add_date("Aspose Series 1",
[ date(2017, 11, 6), date(2017, 11, 9), date(2017, 11, 15), date(2017, 11, 21), date(2017, 11, 25), date(2017, 11, 29) ],
[ 1.2, 0.3, 2.1, 2.9, 4.2, 5.3 ])
xAxis = chart.axis_x
xAxis.scaling.minimum = aw.drawing.charts.AxisBound(date(2017, 11, 5))
xAxis.scaling.maximum = aw.drawing.charts.AxisBound(date(2017, 12, 3))
# Set major units to a week and minor units to a day.
xAxis.major_unit = 7
xAxis.minor_unit = 1
xAxis.major_tick_mark = aw.drawing.charts.AxisTickMark.CROSS
xAxis.minor_tick_mark = aw.drawing.charts.AxisTickMark.OUTSIDE
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.date_time_values_to_axis.docx")

So formatieren Sie den Zahlenwert einer Achse

Das folgende Codebeispiel zeigt, wie Sie das Format von Zahlen auf der Werteachse ändern:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
chart.series.clear()
chart.series.add("Aspose Series 1",
[ "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" ],
[ 1900000, 850000, 2100000, 600000, 1500000 ])
chart.axis_y.number_format.format_code = "#,##0"
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.number_format_for_axis.docx")

So legen Sie Achsengrenzen fest

Die AxisBound-Klasse stellt eine minimale oder maximale Grenze von Achsenwerten dar. Bound kann als numerischer Wert, Datum-Uhrzeit-Wert oder spezieller “Auto”-Wert angegeben werden.

Das folgende Codebeispiel zeigt, wie Grenzen einer Achse festgelegt werden:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
chart.series.clear()
chart.series.add("Aspose Series 1",
[ "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" ],
[ 1.2, 0.3, 2.1, 2.9, 4.2 ])
chart.axis_y.scaling.minimum = aw.drawing.charts.AxisBound(0)
chart.axis_y.scaling.maximum = aw.drawing.charts.AxisBound(6)
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.bounds_of_axis.docx")

So legen Sie die Intervalleinheit zwischen Etiketten fest

Das folgende Codebeispiel zeigt, wie die Intervalleinheit zwischen Beschriftungen auf einer Achse festgelegt wird:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
chart.series.clear()
chart.series.add("Aspose Series 1",
[ "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" ],
[ 1.2, 0.3, 2.1, 2.9, 4.2 ])
chart.axis_x.tick_label_spacing = 2
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.interval_unit_between_labels_on_axis.docx")

So blenden Sie die Diagrammachse aus

Wenn Sie die Diagrammachse ein- oder ausblenden möchten, können Sie dies einfach erreichen, indem Sie den Wert der ChartAxis.hidden-Eigenschaft festlegen.

Das folgende Codebeispiel zeigt, wie Sie die Y-Achse des Diagramms ausblenden:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
chart.series.clear()
chart.series.add("Aspose Series 1",
[ "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" ],
[ 1.2, 0.3, 2.1, 2.9, 4.2 ])
chart.axis_y.hidden = True
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.hide_chart_axis.docx")

So richten Sie die Diagrammbeschriftung aus

Wenn Sie eine Textausrichtung für mehrzeilige Etiketten festlegen möchten, können Sie dies einfach erreichen, indem Sie den Wert der ChartAxis.tick_label_alignment-Eigenschaft festlegen.

Das folgende Codebeispiel zeigt, wie die Beschriftungsausrichtung aktiviert wird:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.SCATTER, 450, 250)
axis = shape.chart.axis_x
# This property has effect only for multi-line labels.
axis.tick_label_alignment = aw.ParagraphAlignment.RIGHT
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.tick_multi_line_label_alignment.docx")

So legen Sie die Füll- und Strichformatierung fest

Füll- und Strichformatierungen können für Diagrammreihen, Datenpunkte und Markierungen festgelegt werden. Dazu müssen Sie die Eigenschaften des ChartFormat-Typs in den ChartSeries-, ChartDataPoint- und ChartMarker-Klassen sowie Aliase für einige Eigenschaften wie fore_color, back_color, visible und transparency in der Stroke-Klasse verwenden.

Das folgende Codebeispiel zeigt, wie die Serienfarbe festgelegt wird:

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")

Das folgende Codebeispiel zeigt, wie Linienfarbe und -stärke festgelegt werden:

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")