Arbeiten mit Diagrammen

Arbeiten mit Diagrammen

Aspose.Words FOSS für .NET kann native Word-Diagramme einfügen — dieselben DrawingML Diagramme, die Word selbst erstellt — als Form im Zeichenlayer. DocumentBuilder.InsertChart erstellt die Form und gibt sie zurück; die Chart-Eigenschaft der Form stellt Serien, Achsen, Legende und Formatierung bereit. Dieser Leitfaden behandelt das Erstellen eines Diagramms, die Auswahl eines Diagrammtyps, die Arbeit mit Serien und Datenpunkten, Achsen und Gitternetzlinien sowie die Formatierung von Diagrammelementen.


Ein Diagramm erstellen

Rufen Sie DocumentBuilder.InsertChart(chartType, width, height) auf, um eine Diagrammform an der Cursorposition einzufügen und das enthaltene Shape zurückzubekommen. Seine Chart-Eigenschaft ist das Chart-Objekt, das Sie konfigurieren. Ein frisch eingefügtes Diagramm enthält Platzhalter-Demo-Serien, daher sollten Sie Chart.Series löschen, bevor Sie reale Daten mit ChartSeriesCollection.Add(seriesName, categories, values) hinzufügen:

using Aspose.Words;
using Aspose.Words.Drawing.Charts;

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;

// Delete default generated series.
chart.Series.Clear();

string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });

doc.Save("chart.docx");

Dieses Beispiel erstellt ein Document, verwendet DocumentBuilder.InsertChart(ChartType.Line, 432, 252), um eine Liniendiagramm-Form einzufügen, liest shape.Chart, um das Chart-Objekt zu erhalten, ruft chart.Series.Clear() auf, um die Platzhalter-Serie zu entfernen, fügt mit chart.Series.Add(seriesName, categories, values) eine reale Serie hinzu und schreibt das Ergebnis mit Document.Save.


Diagrammtypen

ChartType deckt die Standard-Word-Diagrammfamilien ab — Line, Bar, Column (plus deren Stacked, PercentStacked und 3D Varianten), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface und die neueren Word-2016-Diagrammtypen Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker und Waterfall. Übergeben Sie den gewünschten Wert als chartType-Argument an InsertChart; es gibt keine Möglichkeit, den Typ eines bereits eingefügten Diagramms nachträglich zu ändern, außer die Form zu ersetzen.


Serien und Datenpunkte

Chart.Series ist ein ChartSeriesCollection von ChartSeries Objekten. Neben der oben verwendeten Add(seriesName, categories, values)-Überladung hat ChartSeriesCollection außerdem Überladungen für X/Y-Wertpaare, Daten und Blasengrößen sowie Insert, Remove(index) und Clear(). Jede ChartSeries stellt DataPoints (ein ChartDataPointCollection) für die Formatierung pro Punkt bereit — Format, Marker, Explosion und InvertIfNegative — und HasDataLabels / DataLabels, um ein ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position) zu aktivieren und zu konfigurieren.


Achsen und Gitternetzlinien

Chart.AxisX, AxisY und AxisZ sind ChartAxis-Objekte (mit Chart.Axes als ChartAxisCollection zum Durchlaufen aller). Jede Achse hat HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (mit passenden *IsAuto-Flags), Crosses / CrossesAt, CategoryType und ein TickLabels-Objekt (AxisTickLabels) für Beschriftungs-Schriftart und -Ausrichtung. ChartAxis.Title (ChartAxisTitle) legt den Achsentitel-Text über seine Text- und Show-Eigenschaften fest.


Legende, Titel und Datentabelle

Chart.Title (ChartTitle) legt die Gesamtbeschriftung des Diagramms fest – Text, Show und Font. Chart.Legend (ChartLegend) steuert, ob und wo die Legende erscheint, über Position (ein LegendPosition-Wert wie Bottom, Right oder Top) und stellt einzelne LegendEntries bereit. Chart.DataTable (ChartDataTable) kann die zugrunde liegenden Serienwerte als Tabelle unterhalb des Plotbereichs anzeigen, mit Show, HasLegendKeys und Rahmen-Umschaltern.


Formatierung von Diagrammelementen

Die meisten Diagrammelemente — Serien, Datenpunkte, Achsen, der Titel und die Legende — stellen eine Format-Eigenschaft vom Typ ChartFormat bereit, die wiederum Fill und Stroke für die Farben dieses Elements offenlegt, sowie ein ShapeType (ChartShapeType) für die Formen der Datenpunkt-Marker. ChartFormat.SetDefaultFill() setzt ein Element auf sein themenbasiertes Standard-Aussehen zurück.


Tipps und bewährte Verfahren

  • Löschen oder ersetzen Sie immer die Platzhalterserie (chart.Series.Clear()), bevor Sie echte Daten hinzufügen — ein frisch eingefügtes Diagramm enthält bereits Beispieldaten.
  • Verwenden Sie ChartSeriesCollection.Add-Überladungen, die zu Ihrer Datenstruktur passen (Kategorien, X/Y-Paare, Datumsangaben oder Blasengrößen), anstatt alles über Kategorie/Wert-Paare zu zwingen.
  • Legen Sie HasDataLabels = true für eine Serie fest, bevor Sie deren DataLabels-Sammlung konfigurieren — die Anzeigeeigenschaften der Sammlung haben keine sichtbare Wirkung, solange die Beschriftungen deaktiviert sind.
  • Lesen Sie Chart.ChartSpace oder prüfen Sie das spezifische ChartType, bevor Sie sich auf das Verhalten von Gitternetzlinien oder Achsen verlassen, das zwischen klassischen und Word-2016-Diagrammen variiert.
  • Bevorzugen Sie ChartFormat.SetDefaultFill() statt jedes Füllattribut manuell zu leeren, wenn Sie das Aussehen eines Elements zurücksetzen möchten.

Häufige Probleme

ProblemUrsacheLösung
Neues Diagramm zeigt unerwartete Demo-DatenInsertChart initialisiert das Diagramm mit Platzhalter-SerienRufen Sie chart.Series.Clear() auf, bevor Sie Ihre eigenen Serien hinzufügen
Datenbeschriftungen werden nicht angezeigtHasDataLabels wurde nicht auf die Serie gesetzt, bevor DataLabels konfiguriert wurdeSetze series.HasDataLabels = true, dann konfiguriere ShowValue/ShowCategoryName auf series.DataLabels
Gitterlinien werden auf der Werteachse nicht angezeigtHasMajorGridlines/HasMinorGridlines haben standardmäßig den Wert false für diese AchseSetze chart.AxisY.HasMajorGridlines = true (und HasMinorGridlines, falls nötig)
Legende wird nicht angezeigtChart.Legend.Position ist auf LegendPosition.None gesetztSetze Position auf Bottom, Right, Top, Left oder TopRight

FAQ

Wie füge ich ein Diagramm in ein Dokument ein?

Rufen Sie DocumentBuilder.InsertChart(chartType, width, height) auf. Es gibt das enthaltende Shape zurück; lesen Sie dessen Chart-Eigenschaft, um das Diagramm zu konfigurieren.

Wie füge ich einem Diagramm Daten hinzu?

Leeren Sie die Platzhalterserie mit chart.Series.Clear() und rufen Sie dann chart.Series.Add(seriesName, categories, values) auf (oder eine der anderen Add-Überladungen für X/Y-, Datums- oder Blasendaten).

Welche Diagrammtypen stehen zur Verfügung?

ChartType enthält die klassischen Familien (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus deren gestapelte und 3D-Varianten) und die Word-2016-Diagrammtypen (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).

Wie ändere ich, wo die Legende angezeigt wird?

Setzen Sie Chart.Legend.Position auf einen LegendPosition-Wert, z.B. LegendPosition.Bottom oder LegendPosition.Right.

Kann ich einen einzelnen Datenpunkt anders formatieren als den Rest seiner Serie?

Ja — indexiere in ChartSeries.DataPoints (ein ChartDataPointCollection) und setze die Format, Marker oder Explosion dieses ChartDataPoint unabhängig von der Formatierung auf Serienebene.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
DocumentBuilder.InsertChartFügt eine Diagrammform an der Cursorposition ein und gibt sie zurück.
ChartDas Diagrammkonfigurationsobjekt, erreichbar über Shape.Chart.
ChartTypeEnum der verfügbaren Diagrammtypen (Linie, Balken, Kreis und Word-2016-Diagrammtypen).
ChartSeriesCollection / ChartSeriesDie Datenreihen des Diagramms und Methoden, um sie hinzuzufügen, einzufügen oder zu entfernen.
ChartDataPointCollection / ChartDataPointFormatierung pro Punkt innerhalb einer Serie.
ChartDataLabelCollection / ChartDataLabelWert-/Kategorielabels, die auf Diagrammpunkten angezeigt werden.
ChartAxis / ChartAxisCollectionAchsenkonfiguration — Gitternetzlinien, Einheiten, Schnittpunkt, Achsenbeschriftungen.
ChartLegend / LegendPositionSichtbarkeit und Position der Legende.
ChartTitleDie Gesamtkaption des Diagramms.
ChartDataTableOptionale Tabelle mit Serienwerten, die unter dem Diagrammbereich angezeigt wird.
ChartFormatFüll-, Strich- und Formformatierung, die von den meisten Diagrammelementen gemeinsam verwendet wird.

Siehe auch

 Deutsch