Werken met grafieken
Werken met grafieken
Aspose.Words FOSS voor .NET kan native Word-grafieken invoegen — dezelfde DrawingML grafieken die Word zelf maakt — als een vorm in de tekenlaag. DocumentBuilder.InsertChart maakt de vorm en retourneert deze; de Chart eigenschap van de vorm geeft series, assen, legenda en opmaak weer. Deze gids behandelt het maken van een grafiek, het kiezen van een grafiektype, werken met series en gegevenspunten, assen en rasterlijnen, en het opmaken van grafiekelementen.
Een grafiek maken
Roep DocumentBuilder.InsertChart(chartType, width, height) aan om een grafiekvorm in te voegen op de cursor en krijg de bijbehorende Shape terug. De Chart eigenschap daarvan is het Chart object dat je configureert. Een net ingevoegde grafiek wordt geleverd met placeholder-demo-series, dus maak Chart.Series leeg voordat je echte gegevens toevoegt met ChartSeriesCollection.Add(seriesName, categories, values):
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");Dit voorbeeld bouwt een Document, gebruikt DocumentBuilder.InsertChart(ChartType.Line, 432, 252) om een lijngrafiekvorm in te voegen, leest shape.Chart om het Chart object te verkrijgen, roept chart.Series.Clear() aan om de placeholder-series te verwijderen, voegt één echte serie toe met chart.Series.Add(seriesName, categories, values), en schrijft het resultaat weg met Document.Save.
Grafiektype’s
ChartType omvat de standaard Word-grafiekfamilies — Line, Bar, Column (plus hun Stacked, PercentStacked en 3D varianten), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, en de nieuwere Word 2016-grafiektype’s Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker en Waterfall. Geef de gewenste waarde door als het chartType argument aan InsertChart; er is geen manier om het type van een bestaande grafiek na invoeging te wijzigen, behalve door de vorm te vervangen.
Series en gegevenspunten
Chart.Series is een ChartSeriesCollection van ChartSeries objecten. Naast de Add(seriesName, categories, values) overload die hierboven werd gebruikt, heeft ChartSeriesCollection ook overloads voor X/Y-waardeparen, datums en bubbelgroottes, plus Insert, Remove(index) en Clear(). Elke ChartSeries biedt DataPoints (een ChartDataPointCollection) voor per-punt opmaak — Format, Marker, Explosion en InvertIfNegative — en HasDataLabels / DataLabels om een ChartDataLabelCollection in te schakelen en te configureren (ShowValue, ShowCategoryName, ShowPercentage, Position).
Assen en rasterlijnen
Chart.AxisX, AxisY en AxisZ zijn ChartAxis objecten (met Chart.Axes als een ChartAxisCollection om er doorheen te itereren). Elke as heeft HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (met overeenkomende *IsAuto-vlaggen), Crosses / CrossesAt, CategoryType, en een TickLabels object (AxisTickLabels) voor labellettertype en -oriëntatie. ChartAxis.Title (ChartAxisTitle) stelt de asbijschrifttekst in via zijn Text en Show eigenschappen.
Legende, Titel en Gegevenstabel
Chart.Title (ChartTitle) stelt de algemene bijschrift van de grafiek in — Text, Show en Font. Chart.Legend (ChartLegend) bepaalt of en waar de legende verschijnt via Position (een LegendPosition waarde zoals Bottom, Right of Top) en biedt individuele LegendEntries. Chart.DataTable (ChartDataTable) kan de onderliggende serie-waarden weergeven als een tabel onder het plotgebied, met Show, HasLegendKeys en rand-schakelaars.
Opmaak van Grafiekelementen
De meeste grafiekelementen — series, gegevenspunten, assen, de titel en de legende — expose een Format property van type ChartFormat, die op haar beurt Fill en Stroke voor de kleuren van dat element blootlegt, plus een ShapeType (ChartShapeType) voor markervormen van gegevenspunten. ChartFormat.SetDefaultFill() zet een element terug naar zijn thema-gedreven standaarduiterlijk.
Tips en best practices
- Wis of vervang altijd de placeholder-reeks (
chart.Series.Clear()) voordat je echte gegevens toevoegt — een pas ingevoegde grafiek wordt geleverd met voorbeeldgegevens al erin. - Gebruik
ChartSeriesCollection.Add-overloads die passen bij de vorm van je gegevens (categorieën, X/Y-paren, datums of bubbelgroottes) in plaats van alles via categorie/waarde-paren te forceren. - Stel
HasDataLabels = truein op een reeks voordat je deDataLabels-collectie configureert — de weergave-eigenschappen van de collectie hebben geen zichtbaar effect zolang labels uitgeschakeld zijn. - Lees
Chart.ChartSpaceof controleer de specifiekeChartTypevoordat je vertrouwt op rasterlijn- of as-gedrag dat verschilt tussen klassieke en Word-2016-stijl grafieken. - Geef de voorkeur aan
ChartFormat.SetDefaultFill()boven het handmatig wissen van elke vul-eigenschap wanneer je het uiterlijk van een element wilt resetten.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Nieuwe grafiek toont onverwachte demogegevens | InsertChart vult de grafiek met placeholder series | Roep chart.Series.Clear() aan voordat je je eigen series toevoegt |
| Gegevenslabels verschijnen niet | HasDataLabels was niet ingesteld op de series voordat DataLabels werd geconfigureerd | Stel series.HasDataLabels = true in, configureer vervolgens ShowValue/ShowCategoryName op series.DataLabels |
| Rasterlijnen worden niet weergegeven op de waardeas | HasMajorGridlines/HasMinorGridlines staan standaard op false voor die as | Stel chart.AxisY.HasMajorGridlines = true in (en HasMinorGridlines indien nodig) |
| Legenda wordt niet weergegeven | Chart.Legend.Position is ingesteld op LegendPosition.None | Stel Position in op Bottom, Right, Top, Left of TopRight |
FAQ
Hoe voeg ik een grafiek in een document in?
Roep DocumentBuilder.InsertChart(chartType, width, height) aan. Het retourneert de omvattende Shape; lees de Chart eigenschap om de grafiek te configureren.
Hoe voeg ik gegevens toe aan een grafiek?
Wis de tijdelijke reeks met chart.Series.Clear(), roep vervolgens chart.Series.Add(seriesName, categories, values) aan (of een van de andere Add overloads voor X/Y-, datum- of bubbelgegevens).
Welke grafiektype(s) zijn beschikbaar?
ChartType bevat de klassieke families (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, plus hun gestapelde en 3D-varianten) en de Word 2016-grafiektypen (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Hoe wijzig ik waar de legenda verschijnt?
Stel Chart.Legend.Position in op een LegendPosition waarde, bijvoorbeeld LegendPosition.Bottom of LegendPosition.Right.
Kan ik een individueel datapunt anders opmaken dan de rest van de serie?
Ja — indexeer in ChartSeries.DataPoints (een ChartDataPointCollection) en stel die ChartDataPoint’s Format, Marker of Explosion onafhankelijk van de formattering op serieniveau in.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
DocumentBuilder.InsertChart | Voegt een grafiekvorm in op de cursor en retourneert deze. |
Chart | Het grafiekconfiguratie-object, benaderd via Shape.Chart. |
ChartType | Enum van beschikbare grafiektypes (lijn, staaf, taart en Word-2016 grafiektypes). |
ChartSeriesCollection / ChartSeries | De gegevensreeksen van de grafiek en methoden om ze toe te voegen, in te voegen of te verwijderen. |
ChartDataPointCollection / ChartDataPoint | Per-punt opmaak binnen een serie. |
ChartDataLabelCollection / ChartDataLabel | Waarde-/categorialabels weergegeven op diagrampunten. |
ChartAxis / ChartAxisCollection | Asconfiguratie — rasterlijnen, eenheden, kruispunt, tick labels. |
ChartLegend / LegendPosition | Zichtbaarheid en plaatsing van de legenda. |
ChartTitle | Het algemene bijschrift van de grafiek. |
ChartDataTable | Optionele tabel met seriewaarden die onder het plotgebied wordt weergegeven. |
ChartFormat | Vulling-, lijn- en vormopmaak die door de meeste grafiekelementen wordt gedeeld. |