Προσαρμογή αξόνων διαγραμμάτων σε παρουσιάσεις με .NET
Επισκόπηση
Αυτό το άρθρο εξηγεί πώς να προσαρμόσετε τους άξονες διαγραμμάτων με το Aspose.Slides για .NET. Καλύπτει τις υπολογισμένες τιμές άξονα, την εναλλαγή γραμμών και στηλών του διαγράμματος, την ορατότητα του άξονα, τα διαστήματα ετικετών κατηγορίας και σημείων σήμανσης, τις ημερομηνιακές κατηγορίες και τη μορφοποίηση, την περιστροφή τίτλου, την τοποθέτηση του άξονα και τις μονάδες εμφάνισης.
Λήψη των μέγιστων τιμών στον κατακόρυφο άξονα σε διαγράμματα
Δημιουργήστε μια Presentation και προσθέστε ένα διάγραμμα περιοχής με προεπιλεγμένα δεδομένα. Κλήστε το ValidateChartLayout πριν διαβάσετε τις υπολογισμένες τιμές του άξονα, ώστε η διάταξη του διαγράμματος να είναι ενημερωμένη.
Διαβάστε τις ActualMaxValue και ActualMinValue για τα όρια του άξονα, και τις ActualMajorUnit και ActualMinorUnit για τα διαστήματα σημείων σήμανσης. Οι ActualMajorUnitScale και ActualMinorUnitScale παρέχουν κλίμακες μονάδας χρόνου, οι οποίες είναι σχετικές με άξονες ημερομηνίας. Το παράδειγμα αποθηκεύει αυτές τις τιμές σε τοπικές μεταβλητές και αποθηκεύει το διάγραμμα.
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);
Ανταλλαγή δεδομένων μεταξύ αξόνων
Χρησιμοποιήστε το SwitchRowColumn για να ανταλλάξετε τους ρόλους των σειρών και των κατηγοριών στα δεδομένα του διαγράμματος. Κάθε προηγούμενη κατηγορία γίνεται σειρά, και κάθε προηγούμενη σειρά γίνεται κατηγορία. Αυτό αλλάζει τον τρόπο ομαδοποίησης των δεδομένων· δεν ανταλλάσσει τους οριζόντιους και κατακόρυφους άξονες. Το παράδειγμα χρησιμοποιεί το SetRange για να συνδέσει τα προεπιλεγμένα δεδομένα με το Sheet1!A1:D5, συμπεριλαμβανομένης της γραμμής κεφαλίδας και της στήλης κατηγορίας, πριν από την εναλλαγή γραμμών και στηλών. Αποθηκεύει ένα διάγραμμα με τέσσερις σειρές και τρεις κατηγορίες.
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);
Απενεργοποίηση του κάθετου άξονα για γραμμικά διαγράμματα
Ορίστε το IsVisible σε false στον κάθετο άξονα για να τον κρύψετε. Το παράδειγμα δημιουργεί ένα γραμμικό διάγραμμα με προεπιλεγμένα δεδομένα και το αποθηκεύει με τον κάθετο άξονα κρυμμένο.
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);
Απενεργοποίηση του οριζόντιου άξονα για γραμμικά διαγράμματα
Ορίστε το IsVisible σε false στον οριζόντιο άξονα για να τον κρύψετε. Το παράδειγμα δημιουργεί ένα γραμμικό διάγραμμα με προεπιλεγμένα δεδομένα και το αποθηκεύει με τον οριζόντιο άξονα κρυμμένο.
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);
Αλλαγή άξονα κατηγορίας
Ορίστε το CategoryAxisType για να επιλέξετε έναν άξονα κατηγορίας ημερομηνίας ή κειμένου. Αυτό το παράδειγμα απαιτεί το ExistingChart.pptx, με ένα διάγραμμα ως το πρώτο σχήμα στην πρώτη διαφάνεια και κελιά κατηγορίας που περιέχουν αριθμητικές τιμές ημερομηνίας του Excel. Αλλάζει τον οριζόντιο άξονα σε άξονα ημερομηνίας. Ορίζοντας το IsAutomaticMajorUnit σε false, το MajorUnit σε 1 και το MajorUnitScale σε μήνες, τοποθετεί τα κύρια σημεία σε διαστήματα ενός μήνα.
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);
Έλεγχος διαστημάτων ετικέτας άξονα κατηγορίας
Όταν ένα διάγραμμα έχει πολλές κατηγορίες, μειώστε τον αριθμό των ορατών ετικετών άξονα χωρίς να αφαιρέσετε κατηγορίες ή σημεία δεδομένων. Ορίστε το IsAutomaticTickLabelSpacing σε false, στη συνέχεια ορίστε το TickLabelSpacing στο επιθυμητό διάστημα κατηγορίας. Για κατηγορίες κειμένου στην κανονική τους σειρά, η απαρίθμηση αρχίζει από την πρώτη κατηγορία:
| Διάστημα | Ετικέτες που εμφανίζονται στο παράδειγμα |
|---|---|
1 |
Κατηγορία 1, Κατηγορία 2, Κατηγορία 3, … Κατηγορία 24 |
2 |
Κατηγορία 1, Κατηγορία 3, Κατηγορία 5, … Κατηγορία 23 |
3 |
Κατηγορία 1, Κατηγορία 4, Κατηγορία 7, … Κατηγορία 22 |
Ένα διάστημα 3 εμφανίζει κάθε τρίτη ετικέτα, αφήνοντας δύο ετικέτες κρυμμένες μεταξύ των εμφανιζόμενων. Δεν αφαιρεί τις αντίστοιχες στήλες. Η αυτόματη τοποθέτηση επιλέγει ένα διάστημα με βάση τον διαθέσιμο χώρο· δεν εμφανίζει υποχρεωτικά κάθε ετικέτα.
Τα σημεία σήμανσης έχουν ξεχωριστές ρυθμίσεις. Ορίστε το IsAutomaticTickMarksSpacing σε false και χρησιμοποιήστε το TickMarksSpacing για να ορίσετε το διάστημά τους. Για παράδειγμα, 1 διατηρεί ένα σημείο σήμανσης σε κάθε διάστημα κατηγορίας ενώ οι ετικέτες εμφανίζονται μόνο κάθε τρίτη κατηγορία. Ορίστε το MajorTickMark σε ένα ορατό στυλ ώστε να δείτε το αποτέλεσμα. Επαναφέροντας οποιαδήποτε ιδιότητα αυτόματου διαστήματος σε true επιτρέπει στο διάγραμμα να επιλέξει ξανά αυτό το διάστημα.
Το παρακάτω αυτόνομο παράδειγμα δημιουργεί 24 κατηγορίες και μία σειρά, στη συνέχεια αποθηκεύει τρεις διαφάνειες στο CategoryAxisIntervals.pptx: αυτόματη τοποθέτηση, χειροκίνητη τοποθέτηση ετικετών με ανεξάρτητα σημεία σήμανσης, και επαναφορά της αυτόματης τοποθέτησης. Τα δύο αντίγραφα διατηρούν τα αρχικά δεδομένα του διαγράμματος. Δεν απαιτείται είσοδος παρουσίασης. Το οριζόντιο κείμενο ετικέτας καθιστά τη διαφορά στην πυκνότητα εύκολα ορατή.
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;
// Slide 2: εμφάνιση κάθε τρίτης ετικέτας, αλλά διατήρηση σημείου σήμανσης για κάθε κατηγορία.
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;
// Slide 3: άφησε το διάγραμμα να επιλέξει ξανά και τα δύο διαστήματα.
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);
Αυτόματη τοποθέτηση (διαφάνεια 1): Σε αυτήν την απόδοση, κάθε δεύτερη ετικέτα κατηγορίας εμφανίζεται και τυλίγεται σε δύο γραμμές. Το αυτόματο αποτέλεσμα μπορεί να διαφέρει ανάλογα με το μέγεθος του διαγράμματος, τις γραμματοσειρές και το πρόγραμμα απόδοσης.

Χειροκίνητη τοποθέτηση (διαφάνεια 2): Κάθε τρίτη ετικέτα εμφανίζεται σε μια γραμμή, ενώ τα σημεία σήμανσης παραμένουν σε κάθε διάστημα κατηγορίας. Όλες οι 24 στήλες, συμπεριλαμβανομένων των χωρίς ετικέτες, παραμένουν ορατές με τις ίδιες τιμές. Η διαφάνεια 3 επαναφέρει την αυτόματη εμφάνιση που φαίνεται παραπάνω.

Επιλέξτε τον σωστό άξονα και διάστημα
Χρησιμοποιήστε αυτό το διάστημα καταμέτρησης κατηγορίας για έναν άξονα κειμένου, όπως ο άξονας κατηγορίας ενός ράβδου, γραμμικού, περιοχής ή ραβδόσχημου διαγράμματος. Σε ραβδόγραμμα, είναι ο οριζόντιος άξονας. Σε οριζόντιο ραβδόγραμμα, ο άξονας κατηγορίας είναι κατακόρυφος, έτσι εφαρμόστε αυτές τις ρυθμίσεις στο VerticalAxis. Το διάστημα σημείων σήμανσης ισχύει επίσης για άξονα σειράς σε διαγράμματα που έχουν έναν.
Μην χρησιμοποιείτε την τοποθέτηση ετικετών κατηγορίας για να ορίσετε την αριθμητική κλίμακα ενός άξονα τιμών. Σε άξονα τιμών, το MajorUnit καθορίζει τη διαφορά τιμών: για παράδειγμα, μια κύρια μονάδα 10 παράγει σημεία σε 0, 10, 20 κ.λπ. όταν ο άξονας ξεκινά από το μηδέν. Ένα διάστημα ετικέτας κατηγορίας 3 μετρά αντίστοιχα τις θέσεις των κατηγοριών, ανεξάρτητα από τις τιμές των δεδομένων. Τα διαγράμματα διασποράς και φούσκας χρησιμοποιούν άξονες τιμών αντί για έναν άξονα κειμένου κατηγορίας. Για άξονα ημερομηνίας, χρησιμοποιήστε τις μονάδες και κλίμακες χρόνου όπως περιγράφεται στην ενότητα Change a Category Axis.
Ορισμός μορφής ημερομηνίας για τιμές άξονα κατηγορίας
Το παράδειγμα αντικαθιστά τα προεπιλεγμένα δεδομένα του διαγράμματος με τέσσερις ετήσιες τιμές. Οι ημερομηνίες αποθηκεύονται ως σειριακοί αριθμοί OLE Automation στο πρώτο φύλλο εργασίας (δείκτης 0). Ορίστε το CategoryAxisType σε άξονα ημερομηνίας, απενεργοποιήστε το IsNumberFormatLinkedToSource, και εκχωρήστε yyyy στο NumberFormat ώστε οι ετικέτες κατηγορίας να εμφανίζουν τέσσερα ψηφία έτους ανεξάρτητα από τη μορφοποίηση του κελιού.
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);
Ορισμός γωνίας περιστροφής για τον τίτλο άξονα διαγράμματος
Ενεργοποιήστε το HasTitle στον κάθετο άξονα, δώστε κείμενο τίτλου, και ορίστε το RotationAngle για να περιστρέψετε τον τίτλο. Η γωνία μετριέται σε μοίρες· αυτό το παράδειγμα αποθηκεύει ένα ραβδόγραμμα με τον τίτλο του άξονα τιμών περιστραμμένο κατά 90 μοίρες.
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);
Ορισμός θέσης άξονα σε άξονα κατηγορίας ή τιμών
Χρησιμοποιήστε το AxisBetweenCategories για να ελέγξετε αν ο άξονας τιμών διασχίζει τον άξονα κατηγορίας μεταξύ των κατηγοριών ή σε σημείο σήμανσης της κατηγορίας. Αυτή η ιδιότητα εφαρμόζεται στους άξονες κατηγορίας. Το παράδειγμα το ορίζει σε true στον οριζόντιο άξονα κατηγορίας ενός ραβδόσχημου διαγράμματος και αποθηκεύει το αποτέλεσμα.
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);
Ορισμός μονάδας εμφάνισης σε άξονα τιμών διαγράμματος
Ορίστε το DisplayUnit για να κλιμακώσετε τις ετικέτες σε έναν άξονα τιμών χωρίς να αλλάξετε τα υποκείμενα δεδομένα. Με το DisplayUnitType ορισμένο σε Millions, μια τιμή των 60 000 000 εμφανίζεται ως 60. Το παράδειγμα δημιουργεί ένα ραβδόγραμμα και εφαρμόζει τη μονάδα εμφάνισης εκατομμυρίων στον κάθετο άξονά του.
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);
Συχνές ερωτήσεις
Πώς ορίζω την τιμή στην οποία ένας άξονας διασχίζει τον άλλο (διασταύρωση άξονα);
Χρησιμοποιήστε το CrossType για να επιλέξετε τη συμπεριφορά διασταύρωσης. Για να ορίσετε μια αριθμητική τιμή διασταύρωσης, ορίστε το CrossAt. Αυτές οι ρυθμίσεις σας επιτρέπουν να μετακινήσετε τη διασταύρωση του άξονα σε μια κατάλληλη βάση.
Πώς μπορώ να τοποθετήσω τις ετικέτες σημείων σήμανσης σε σχέση με τον άξονα;
Ορίστε το TickLabelPosition χρησιμοποιώντας το TickLabelPositionType: Low, High, NextTo ή None. Για να ελέγξετε τα ίδια τα σημεία σήμανσης, χρησιμοποιήστε το MajorTickMark ή το MinorTickMark; αυτά είναι ξεχωριστά από τη θέση των ετικετών.