Hoe te werken met grafieken in .NET

Hoe te werken met grafieken in .NET

Deze gids laat zien hoe je een native Word-diagram invoegt en de weergave ervan beheert met Aspose.Words FOSS voor .NET — het verbergen van de legenda en assen, het fixeren van de schaal van de waardenas, vervolgens een ander diagramtype kiezen en gegevenslabels en individuele punten opmaken. Aspose.Words FOSS voor .NET is beschikbaar via NuGet of door het vanaf de bron te bouwen.

Stapsgewijze handleiding

Stap 1: Haal de bibliotheek op

Kloon de repository en bouw Aspose.Words.sln in Release-configuratie, voeg vervolgens een projectreferentie toe aan Aspose.Words.csproj vanuit je eigen .NET project, zoals beschreven in de Installatiehandleiding.


Stap 2: Voeg een diagram in en vereenvoudig de weergave

DocumentBuilder.InsertChart(chartType, width, height) voegt een diagramvorm in op de cursor en retourneert het omvattende Shape; zijn Chart eigenschap is het Chart object dat je configureert, met AxisX, AxisY, Legend en Title als de belangrijkste subobjecten. Diagramtype-klassen bevinden zich in de Aspose.Words.Drawing.Charts namespace naast de kern Aspose.Words namespace. Een minimale, presentatieklare ChartType.Bar diagram op een nieuw Document betekent vaak het instellen van Legend.Position op LegendPosition.None, het instellen van Hidden en HasMajorGridlines op AxisY en AxisX, het instellen van Title.Show op false, het leegmaken van de placeholder ChartSeriesCollection met Series.Clear() vóór het aanroepen van Series.Add(seriesName, categories, values), het vastzetten van AxisY.Scaling.Maximum op een vaste AxisBound in plaats van automatisch te schalen, en vervolgens het resultaat wegschrijven met Document.Save. Het volledige voorbeeld — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound en Document.Save — ziet er als volgt uit:

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

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

Shape shape = builder.InsertChart(ChartType.Bar, 432, 252);
Chart chart = shape.Chart;
chart.Legend.Position = LegendPosition.None;

ChartSeriesCollection seriesColl = chart.Series;
chart.AxisY.Hidden = true;
chart.AxisY.HasMajorGridlines = false;
chart.AxisX.Hidden = true;
chart.Title.Show = false;

seriesColl.Clear();
chart.AxisY.Scaling.Maximum = new AxisBound(100);

string[] categories = new string[] { "AW Category 1" };
seriesColl.Add("AW Series 1", categories, new double[] { 30 });

doc.Save("chart.docx");

Dit bouwt een Document, voegt een ChartType.Bar diagram in, stelt Chart.Legend.Position in op LegendPosition.None om de legenda te verbergen, stelt Hidden = true en HasMajorGridlines = false in op chart.AxisY en Hidden = true op chart.AxisX, stelt chart.Title.Show = false in, wist de placeholder-reeks met seriesColl.Clear(), fixeert de waardenas op een 100 maximum via chart.AxisY.Scaling.Maximum = new AxisBound(100), voegt één echte reeks toe met seriesColl.Add(seriesName, categories, values), en schrijft het resultaat weg met Document.Save.


Stap 3: Kies een ander diagramtype

ChartType omvat de standaard Word-diagramfamilies — Line, Bar, Column (plus Stacked, PercentStacked en 3D varianten), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, en de Word 2016-typen Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker en Waterfall. Geef de gewenste waarde door als het chartType argument aan InsertChart — er is geen lid dat het type van een bestaand diagram na invoeging wijzigt, dus kies het juiste type van tevoren of vervang de vorm.


Stap 4: Voeg gegevenslabels toe en formatteer ze

Stel series.HasDataLabels = true in voordat je series.DataLabels (een ChartDataLabelCollection) configureert — de weergave-schakelaars hebben geen zichtbaar effect terwijl labels uitgeschakeld zijn. ShowValue, ShowCategoryName en ShowPercentage bepalen welke informatie-onderdelen verschijnen, en Position plaatst ze relatief ten opzichte van het gegevenspunt.


Stap 5: Formatteer een individueel gegevenspunt

Indexeer in de DataPoints (een ChartDataPointCollection) van een reeks om één ChartDataPoint te bereiken en stel zijn Format, Marker, Explosion of InvertIfNegative in, onafhankelijk van de rest van de reeks. Zo kun je één balk, deel of markering benadrukken zonder de hele reeks opnieuw te stijlen.

Veelvoorkomende problemen en oplossingen

Nieuwe grafiek toont onverwachte demogegevens. InsertChart zaait de grafiek met tijdelijke series. Roep chart.Series.Clear() aan voordat je je eigen series toevoegt.

Hiding AxisY verwijdert de rasterlijnen niet. Hidden verbergt de aslijn en labels; rasterlijnen zijn een aparte schakelaar. Stel HasMajorGridlines = false (en HasMinorGridlines = false als kleine rasterlijnen ook zichtbaar zijn).

Gegevenslabels verschijnen niet na het instellen van ShowValue = true. HasDataLabels was niet eerst op de reeks ingesteld. Stel series.HasDataLabels = true, stel vervolgens in series.DataLabels.

Scaling.Maximum lijkt niet van toepassing te zijn. Bevestig dat je het instelt op het juiste asobjectchart.AxisY voor de waardas in de meeste grafiektype) en dat geen eerdere codepad dit reset Scaling terug naar de standaard AxisBound().

Veelgestelde vragen

Hoe verberg ik de legenda van een grafiek?

Stel chart.Legend.Position = LegendPosition.None in.

Hoe stel ik een as vast op een specifiek bereik in plaats van automatisch schalen?

Stel AxisScaling.Minimum en/of AxisScaling.Maximum (beide AxisBound waarden) in op chart.AxisX.Scaling of chart.AxisY.Scaling.

Hoe verberg ik de grafiektitel zonder deze te verwijderen?

Stel chart.Title.Show = false in. Het ChartTitle object en zijn Text blijven; alleen het zichtbare bijschrift wordt onderdrukt.

Welke grafiektype(s) zijn beschikbaar?

ChartType geeft de klassieke families weer (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus gestapelde en 3D-varianten) naast de Word 2016-typen (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).

Kan ik één gegevenspunt anders opmaken dan de rest van de serie?

Ja — indexeer in ChartSeries.DataPoints en stel die ChartDataPoint’s Format, Marker of Explosion onafhankelijk in.

Zie ook

 Nederlands