Πώς να εργαστείτε με διαγράμματα στο .NET
Αυτός ο οδηγός δείχνει πώς να εισάγετε ένα ενσωματωμένο γράφημα Word και να ελέγξετε την εμφάνισή του με το Aspose.Words FOSS για .NET — κρύβοντας τη λεζάντα και τους άξονες, διορθώνοντας την κλίμακα του άξονα τιμών, στη συνέχεια επιλέγοντας διαφορετικό τύπο γραφήματος και μορφοποιώντας τις ετικέτες δεδομένων και τα μεμονωμένα σημεία. Το Aspose.Words FOSS για .NET είναι διαθέσιμο μέσω NuGet ή με κατασκευή από τον κώδικα.
Οδηγός βήμα-βήμα
Βήμα 1: Λάβετε τη βιβλιοθήκη
Κλωνοποιήστε το αποθετήριο και δημιουργήστε Aspose.Words.sln σε διαμόρφωση Release, στη συνέχεια προσθέστε μια αναφορά έργου σε Aspose.Words.csproj από το δικό σας έργο .NET, όπως περιγράφεται στο Οδηγός εγκατάστασης.
Βήμα 2: Εισάγετε ένα γράφημα και απλοποιήστε την εμφάνισή του
DocumentBuilder.InsertChart(chartType, width, height) εισάγει ένα σχήμα γραφήματος στον κέρσορα και επιστρέφει το περιέχον Shape; η ιδιότητα Chart του είναι το αντικείμενο Chart που διαμορφώνετε, με τα AxisX, AxisY, Legend και Title ως κύριες υπο-αντικείμενα του. Οι τύποι γραφημάτων βρίσκονται στον χώρο ονομάτων Aspose.Words.Drawing.Charts παράλληλα με τον βασικό χώρο ονομάτων Aspose.Words. Ένα ελάχιστο, έτοιμο για παρουσίαση ChartType.Bar γράφημα σε νέο Document συχνά σημαίνει ορισμό του Legend.Position σε LegendPosition.None, ορισμό του Hidden και του HasMajorGridlines σε AxisY και AxisX, ορισμό του Title.Show σε false, εκκαθάριση του placeholder ChartSeriesCollection με Series.Clear() πριν κληθεί το Series.Add(seriesName, categories, values), στερέωση του AxisY.Scaling.Maximum σε σταθερό AxisBound αντί να το αφήσετε να κλιμακώνεται αυτόματα, και τέλος εγγραφή του αποτελέσματος με Document.Save. Το πλήρες παράδειγμα — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound και Document.Save — φαίνεται ως εξής:
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");Αυτό δημιουργεί ένα Document, εισάγει ένα γράφημα ChartType.Bar, ορίζει το Chart.Legend.Position σε LegendPosition.None για να κρύψει τη λεζάντα, ορίζει τα Hidden = true και HasMajorGridlines = false στο chart.AxisY και τα Hidden = true στο chart.AxisX, ορίζει το chart.Title.Show = false, καθαρίζει τη σειρά placeholder με το seriesColl.Clear(), διορθώνει τον άξονα τιμών σε ένα μέγιστο 100 μέσω chart.AxisY.Scaling.Maximum = new AxisBound(100), προσθέτει μία πραγματική σειρά με το seriesColl.Add(seriesName, categories, values), και γράφει το αποτέλεσμα με το Document.Save.
Βήμα 3: Επιλέξτε διαφορετικό τύπο γραφήματος
ChartType καλύπτει τις τυπικές οικογένειες γραφημάτων του Word — Line, Bar, Column (συμπεριλαμβανομένων των παραλλαγών Stacked, PercentStacked και 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, και των τύπων Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, και Waterfall. Πληκτρολογήστε την τιμή που θέλετε ως το επιχείρημα chartType στο InsertChart — δεν υπάρχει μέλος που να αλλάζει τον τύπο ενός υπάρχοντος γραφήματος μετά την εισαγωγή, οπότε επιλέξτε το σωστό από την αρχή ή αντικαταστήστε το σχήμα.
Βήμα 4: Προσθέστε και μορφοποιήστε ετικέτες δεδομένων
Ορίστε το series.HasDataLabels = true πριν διαμορφώσετε το series.DataLabels (ένα ChartDataLabelCollection) — οι εναλλαγές εμφάνισης του δεν έχουν ορατό αποτέλεσμα ενώ οι ετικέτες είναι απενεργοποιημένες. Τα ShowValue, ShowCategoryName και ShowPercentage ελέγχουν ποια κομμάτια πληροφοριών εμφανίζονται, και το Position τα τοποθετεί σχετικά με το σημείο δεδομένων.
Βήμα 5: Μορφοποιήστε ένα μεμονωμένο σημείο δεδομένων
Δεικτοδοτήστε στο DataPoints μιας σειράς (ένα ChartDataPointCollection) για να φτάσετε σε ένα ChartDataPoint και ορίστε το Format, Marker, Explosion ή InvertIfNegative ανεξάρτητα από τα υπόλοιπα της σειράς. Έτσι μπορείτε να τονίσετε μία μοναδική μπάρα, φέτα ή δείκτη χωρίς να επανασχεδιάσετε ολόκληρη τη σειρά.
Κοινά Προβλήματα και Λύσεις
Το νέο γράφημα εμφανίζει απρόσμενα δεδομένα επίδειξης. InsertChart σπέρνει το γράφημα με placeholder series. Call chart.Series.Clear() πριν προσθέσετε τις δικές σας series.
Hiding AxisY δεν αφαιρεί τις gridlines. Hidden κρύβει τη γραμμή του άξονα και τις ετικέτες· οι γραμμές πλέγματος είναι ξεχωριστή εναλλαγή. Ορίστε HasMajorGridlines = false (και HasMinorGridlines = false αν οι μικρές γραμμές πλέγματος είναι επίσης ορατές).
Οι ετικέτες δεδομένων δεν εμφανίζονται μετά τον ορισμό ShowValue = true. HasDataLabels δεν είχε οριστεί πρώτα στη σειρά. Ορίστε series.HasDataLabels = true, στη συνέχεια διαμορφώστε series.DataLabels.
Scaling.Maximum δεν φαίνεται να εφαρμόζεται. Επιβεβαιώστε ότι το ρυθμίζετε στο σωστό αντικείμενο άξονα (chart.AxisY για τον άξονα τιμών στις περισσότερες τύπους διαγραμμάτων) και ότι κανένα προηγούμενο μονοπάτι κώδικα δεν επαναφέρει Scaling προς την προεπιλογή του AxisBound().
Συχνές Ερωτήσεις
Πώς κρύβω το υπόμνημα ενός διαγράμματος;
Ορίστε το chart.Legend.Position = LegendPosition.None.
Πώς μπορώ να κλειδώσω έναν άξονα σε συγκεκριμένο εύρος αντί για αυτόματη κλιμάκωση;
Ορίστε AxisScaling.Minimum και/ή AxisScaling.Maximum (και οι δύο τιμές AxisBound) στο chart.AxisX.Scaling ή στο chart.AxisY.Scaling.
Πώς μπορώ να κρύψω τον τίτλο του διαγράμματος χωρίς να τον διαγράψω;
Ορίστε chart.Title.Show = false. Το αντικείμενο ChartTitle και τα Text του παραμένουν· μόνο η ορατή λεζάντα καταστέλλεται.
Ποιοι τύποι διαγραμμάτων είναι διαθέσιμοι;
ChartType παραθέτει τις κλασικές οικογένειες (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, καθώς και τις στοίβακτες και 3Δ παραλλαγές) παράλληλα με τους τύπους Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
Μπορώ να μορφοποιήσω ένα σημείο δεδομένων διαφορετικά από τα υπόλοιπα της σειράς του;
Ναι — προσπελάστε το ChartSeries.DataPoints με δείκτη και ορίστε το Format, Marker ή Explosion του ChartDataPoint ανεξάρτητα.