Grafiekassen aanpassen in presentaties in .NET
Overzicht
Dit artikel legt uit hoe u de assen van een diagram kunt aanpassen met Aspose.Slides for .NET. Het behandelt berekende aswaarden, het omwisselen van diagramrijen en -kolommen, aszichtbaarheid, intervallen voor categorie‑labels en tick‑marks, datumcategorieën en -opmaak, rotatie van titels, aspositionering en weergave‑eenheden.
Maximale waarden op de verticale as van diagrammen ophalen
Maak een Presentation en voeg een gebiedsdiagram toe met standaardgegevens. Roep ValidateChartLayout aan voordat u berekende aswaarden uitleest, zodat de diagramindeling up-to-date is.
Lees ActualMaxValue en ActualMinValue voor de aslimieten, en ActualMajorUnit en ActualMinorUnit voor de tick‑intervallen. ActualMajorUnitScale en ActualMinorUnitScale bieden tijd‑eenheidsschaal, die relevant zijn voor datumassen. Het voorbeeld slaat deze waarden op in lokale variabelen en slaat het diagram op.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.Area, 100, 100, 500, 350);
chart.ValidateChartLayout();
var maxValue = chart.Axes.VerticalAxis.ActualMaxValue;
var minValue = chart.Axes.VerticalAxis.ActualMinValue;
var majorUnit = chart.Axes.VerticalAxis.ActualMajorUnit;
var minorUnit = chart.Axes.VerticalAxis.ActualMinorUnit;
var majorUnitScale = chart.Axes.VerticalAxis.ActualMajorUnitScale;
var minorUnitScale = chart.Axes.VerticalAxis.ActualMinorUnitScale;
presentation.Save("AxisValues_out.pptx", SaveFormat.Pptx);
Gegevens tussen assen omwisselen
Gebruik SwitchRowColumn om de rollen van series en categorieën in diagramgegevens uit te wisselen. Elke voormalige categorie wordt een serie, en elke voormalige serie wordt een categorie. Dit verandert hoe de gegevens worden gegroepeerd; het wisselt niet de horizontale en verticale assen uit. Het voorbeeld gebruikt SetRange om de standaardgegevens te koppelen aan Sheet1!A1:D5, inclusief de koprij en categoriekolom, voordat rijen en kolommen worden omgewisseld. Het slaat een diagram op met vier series en drie categorieën.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 400, 300);
chart.ChartData.SetRange("Sheet1!A1:D5");
chart.ChartData.SwitchRowColumn();
presentation.Save("SwitchChartRowColumns_out.pptx", SaveFormat.Pptx);
Verticale as uitschakelen voor lijndiagrammen
Stel IsVisible in op false voor de verticale as om deze te verbergen. Het voorbeeld maakt een lijndiagram met standaardgegevens en slaat het op met de verticale as verborgen.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.Line, 100, 100, 400, 300);
chart.Axes.VerticalAxis.IsVisible = false;
presentation.Save("HiddenVerticalAxis.pptx", SaveFormat.Pptx);
Horizontale as uitschakelen voor lijndiagrammen
Stel IsVisible in op false voor de horizontale as om deze te verbergen. Het voorbeeld maakt een lijndiagram met standaardgegevens en slaat het op met de horizontale as verborgen.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.Line, 100, 100, 400, 300);
chart.Axes.HorizontalAxis.IsVisible = false;
presentation.Save("HiddenHorizontalAxis.pptx", SaveFormat.Pptx);
Categorie‑as wijzigen
Stel CategoryAxisType in om een datum‑ of tekst‑categorie‑as te kiezen. Dit voorbeeld vereist ExistingChart.pptx, met een diagram als de eerste vorm op de eerste dia en categoriecellen die numerieke Excel‑datumnummers bevatten. Het wijzigt de horizontale as naar een datum‑as. Door IsAutomaticMajorUnit op false te zetten, MajorUnit op 1 en MajorUnitScale op maanden, worden de grote ticks op een‑maand‑intervallen geplaatst.
using System;
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation("ExistingChart.pptx");
var slide = presentation.Slides[0];
var chart = (IChart) slide.Shapes[0];
chart.Axes.HorizontalAxis.CategoryAxisType = CategoryAxisType.Date;
chart.Axes.HorizontalAxis.IsAutomaticMajorUnit = false;
chart.Axes.HorizontalAxis.MajorUnit = 1;
chart.Axes.HorizontalAxis.MajorUnitScale = TimeUnitType.Months;
presentation.Save("ChangeChartCategoryAxis_out.pptx", SaveFormat.Pptx);
Intervallen voor categorie‑as‑labels beheren
Wanneer een diagram veel categorieën heeft, kunt u het aantal zichtbare aslabels verminderen zonder categorieën of gegevenspunten te verwijderen. Stel IsAutomaticTickLabelSpacing in op false, en stel vervolgens TickLabelSpacing in op de gewenste categorie‑interval. Voor tekstdcategorieën in hun normale volgorde, begint de telling bij de eerste categorie:
| Interval | Labels die in het voorbeeld worden weergegeven |
|---|---|
1 |
Category 1, Category 2, Category 3, … Category 24 |
2 |
Category 1, Category 3, Category 5, … Category 23 |
3 |
Category 1, Category 4, Category 7, … Category 22 |
Een interval van 3 toont elk derde label, waarbij twee labels tussen de weergegeven labels verborgen blijven. Het verwijdert de overeenkomstige kolommen niet. Automatische spatiëring kiest een interval op basis van de beschikbare ruimte; het toont niet noodzakelijk elk label.
Tick‑marks hebben afzonderlijke instellingen. Stel IsAutomaticTickMarksSpacing in op false en gebruik TickMarksSpacing om hun interval in te stellen. Bijvoorbeeld, 1 behoudt een tick‑mark bij elke categorie‑interval terwijl labels alleen elke derde categorie verschijnen. Stel MajorTickMark in op een zichtbaar stijl zodat u het resultaat kunt zien. Het terugzetten van een van de automatische‑spatiërings‑eigenschappen naar true laat het diagram dat interval opnieuw kiezen.
Het onderstaande zelfstandige voorbeeld maakt 24 categorieën en één serie, en slaat vervolgens drie dia’s op in CategoryAxisIntervals.pptx: automatische spatiëring, handmatige labelspatiëring met onafhankelijke tick‑marks, en herstelde automatische spatiëring. De twee kopieën behouden de oorspronkelijke diagramgegevens. Er is geen input‑presentatie vereist. Horizontale labeltekst maakt het verschil in dichtheid gemakkelijk zichtbaar.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 30, 40, 660, 320);
chart.HasLegend = false;
chart.ChartData.Categories.Clear();
chart.ChartData.Series.Clear();
var workbook = chart.ChartData.ChartDataWorkbook;
workbook.Clear(0);
var series = chart.ChartData.Series.Add(ChartType.ClusteredColumn);
for (var i = 0; i < 24; i++)
{
var categoryCell = workbook.GetCell(0, i + 1, 0, $"Category {i + 1}");
chart.ChartData.Categories.Add(categoryCell);
var valueCell = workbook.GetCell(0, i + 1, 1, 10 + i % 6 * 5);
series.DataPoints.AddDataPointForBarSeries(valueCell);
}
var axis = chart.Axes.HorizontalAxis;
axis.CategoryAxisType = CategoryAxisType.Text;
axis.TextFormat.TextBlockFormat.RotationAngle = 0;
axis.TextFormat.PortionFormat.FontHeight = 12;
axis.MajorTickMark = TickMarkType.Outside;
axis.IsAutomaticTickLabelSpacing = true;
axis.IsAutomaticTickMarksSpacing = true;
// Dia 2: toon elk derde label, maar behoud een tick-mark voor elke categorie.
var manualSlide = presentation.Slides.AddClone(slide);
var manualChart = (IChart)manualSlide.Shapes[0];
var manualAxis = manualChart.Axes.HorizontalAxis;
manualAxis.IsAutomaticTickLabelSpacing = false;
manualAxis.TickLabelSpacing = 3;
manualAxis.IsAutomaticTickMarksSpacing = false;
manualAxis.TickMarksSpacing = 1;
// Dia 3: laat het diagram beide intervallen opnieuw kiezen.
var restoredSlide = presentation.Slides.AddClone(manualSlide);
var restoredChart = (IChart)restoredSlide.Shapes[0];
restoredChart.Axes.HorizontalAxis.IsAutomaticTickLabelSpacing = true;
restoredChart.Axes.HorizontalAxis.IsAutomaticTickMarksSpacing = true;
presentation.Save("CategoryAxisIntervals.pptx", SaveFormat.Pptx);
Automatische spatiëring (dia 1): In deze weergave wordt elk tweede categorielabel weergegeven en wordt het op twee regels afgebroken. Het automatische resultaat kan variëren met diagramgrootte, lettertypen en de renderer.

Handmatige spatiëring (dia 2): Elk derde label wordt op één regel weergegeven, terwijl tick‑marks behouden blijven bij elke categorie‑interval. Alle 24 kolommen, inclusief die zonder labels, blijven zichtbaar met dezelfde waarden. Dia 3 herstelt de automatische weergave zoals hierboven.

Kies de juiste as en interval
Gebruik dit categorie‑aantal‑interval voor een tekst‑categorie‑as, zoals de categorie‑as van een kolom‑, lijn‑, gebied‑ of staafdiagram. In een kolomdiagram is dit de horizontale as. In een horizontaal staafdiagram is de categorie‑as verticaal, dus pas deze instellingen toe op VerticalAxis. De spatiëring van tick‑marks geldt ook voor een series‑as in diagrammen die er één hebben.
Gebruik geen categorie‑labelspatiëring om de numerieke schaal van een waardenas in te stellen. Op een waardenas specificeert MajorUnit een verschil in waarden: bijvoorbeeld, een major‑unit van 10 levert ticks op 0, 10, 20, enzovoort wanneer de as bij nul begint. Een categorie‑labelinterval van 3 telt in plaats daarvan positie‑indices, ongeacht hun gegevenswaarden. Spreidings‑ en bubbeldiagrammen gebruiken waardenas in plaats van een tekst‑categorie‑as. Voor een datum‑as gebruikt u tijd‑gebaseerde major‑units en schalen zoals beschreven in Categorie‑as wijzigen.
Datumnotatie voor categorie‑aswaarden instellen
Het voorbeeld vervangt de standaarddiagramgegevens door vier jaarswaarden. Datums worden opgeslagen als OLE Automation‑serienummers in het eerste werkblad (index 0). Stel CategoryAxisType in op een datum‑as, schakel IsNumberFormatLinkedToSource uit, en ken yyyy toe aan NumberFormat zodat de categorie‑labels viercijferige jaartallen weergeven, onafhankelijk van de celopmaak.
using System;
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.Line, 50, 50, 450, 300);
chart.ChartData.Categories.Clear();
chart.ChartData.Series.Clear();
var workbook = chart.ChartData.ChartDataWorkbook;
workbook.Clear(0);
var series = chart.ChartData.Series.Add(ChartType.Line);
for (var i = 0; i < 4; i++)
{
var date = new DateTime(2015 + i, 1, 1);
var categoryCell = workbook.GetCell(0, i + 1, 0, date.ToOADate());
chart.ChartData.Categories.Add(categoryCell);
var valueCell = workbook.GetCell(0, i + 1, 1, i + 1);
series.DataPoints.AddDataPointForLineSeries(valueCell);
}
chart.Axes.HorizontalAxis.CategoryAxisType = CategoryAxisType.Date;
chart.Axes.HorizontalAxis.IsNumberFormatLinkedToSource = false;
chart.Axes.HorizontalAxis.NumberFormat = "yyyy";
presentation.Save("DateAxisFormat.pptx", SaveFormat.Pptx);
Rotatie‑hoek voor een diagram‑as‑titel instellen
Schakel HasTitle in op de verticale as, geef titeltekst op, en stel RotationAngle in om de titel te roteren. De hoek wordt gemeten in graden; dit voorbeeld slaat een kolomdiagram op met zijn waardenas‑titel geroteerd naar 90 graden.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.Axes.VerticalAxis.HasTitle = true;
chart.Axes.VerticalAxis.Title.AddTextFrameForOverriding("Value");
chart.Axes.VerticalAxis.Title.TextFormat.TextBlockFormat.RotationAngle = 90;
presentation.Save("RotatedAxisTitle.pptx", SaveFormat.Pptx);
Aspositie instellen op een categorie‑ of waardenas
Gebruik AxisBetweenCategories om te bepalen of de waardenas de categorie‑as kruist tussen categorieën of op categorietick‑marks. Deze eigenschap geldt voor categorie‑assen. Het voorbeeld stelt dit in op true voor de horizontale categorie‑as van een kolomdiagram en slaat het resultaat op.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.Axes.HorizontalAxis.AxisBetweenCategories = true;
presentation.Save("AxisBetweenCategories.pptx", SaveFormat.Pptx);
Weergave‑eenheid op een diagram‑waardenas instellen
Stel DisplayUnit in om de labels op een waardenas te schalen zonder de onderliggende gegevens te wijzigen. Met DisplayUnitType ingesteld op Millions wordt een waarde van 60.000.000 weergegeven als 60. Het voorbeeld maakt een kolomdiagram en past de miljoenen‑weergave‑eenheid toe op de verticale as.
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.Axes.VerticalAxis.DisplayUnit = DisplayUnitType.Millions;
presentation.Save("Result.pptx", SaveFormat.Pptx);
FAQ
Hoe stel ik de waarde in waarop één as de andere kruist (as‑kruising)?
Gebruik CrossType om het kruisinggedrag te selecteren. Om een numerieke kruisingwaarde op te geven, stel CrossAt in. Deze instellingen laten u de askruising naar een geschikte basislijn verplaatsen.
Hoe kan ik tick‑labels positioneren ten opzichte van de as?
Stel TickLabelPosition in via TickLabelPositionType: Low, High, NextTo of None. Om de tick‑marks zelf te regelen, gebruik MajorTickMark of MinorTickMark; deze staan los van de labelpositionering.