Μορφοποίηση Διαγραμμάτων Παρουσίασης σε .NET

Επισκόπηση

Αυτό το άρθρο εξηγεί πώς να μορφοποιήσετε διαγράμματα σε παρουσιάσεις PowerPoint χρησιμοποιώντας το Aspose.Slides. Δείχνει πώς να προσαρμόσετε βασικά στοιχεία του διαγράμματος όπως άξονες, γραμμές πλέγματος, τίτλους, υπομνήματα, την περιοχή σχεδίασης και τις γεμίσεις τοίχου για να βελτιώσετε την εμφάνιση και την αναγνωσιμότητα των δεδομένων του διαγράμματος.

Επίσης, δείχνει πώς να ορίσετε ιδιότητες γραμματοσειράς για το κείμενο του διαγράμματος, να εφαρμόσετε προεπιλεγμένες και προσαρμοσμένες αριθμητικές μορφές στα δεδομένα του διαγράμματος, και να ενεργοποιήσετε στρογγυλεμένες γωνίες για την περιοχή του διαγράμματος. Μαζί, αυτά τα παραδείγματα δείχνουν πώς να ελέγχετε τόσο το οπτικό στυλ όσο και την παρουσίαση των δεδομένων των διαγραμμάτων σε μια παρουσίαση.

Μορφοποίηση Στοιχείων Διαγράμματος

Το Aspose.Slides για .NET επιτρέπει στους προγραμματιστές να προσθέτουν προσαρμοσμένα διαγράμματα στις διαφάνειές τους από την αρχή. Αυτό το άρθρο εξηγεί πώς να μορφοποιήσετε διάφορα στοιχεία διαγράμματος συμπεριλαμβανομένου του άξονα κατηγορίας και τιμής.

Το Aspose.Slides για .NET παρέχει ένα απλό API για τη διαχείριση διαφορετικών στοιχείων διαγράμματος και τη μορφοποίησή τους χρησιμοποιώντας προσαρμοσμένες τιμές:

  1. Δημιουργήστε ένα παράδειγμα της κλάσης Presentation.
  2. Αποκτήστε μια αναφορά στη διαφάνεια με το δείκτη της.
  3. Προσθέστε ένα διάγραμμα με προεπιλεγμένα δεδομένα και οποιουδήποτε επιθυμητού τύπου (σε αυτό το παράδειγμα θα χρησιμοποιήσουμε ChartType.LineWithMarkers).
  4. Προσπελάστε τον Άξονα Τιμής του διαγράμματος και ορίστε τις ακόλουθες ιδιότητες:
    1. Ορισμός Line format για τις κύριες γραμμές πλέγματος του Άξονα Τιμής
    2. Ορισμός Line format για τις δευτερεύουσες γραμμές πλέγματος του Άξονα Τιμής
    3. Ορισμός Number Format για τον Άξονα Τιμής
    4. Ορισμός Min, Max, Major and Minor units για τον Άξονα Τιμής
    5. Ορισμός Text Properties για τα δεδομένα του Άξονα Τιμής
    6. Ορισμός Title για τον Άξονα Τιμής
    7. Ορισμός Line Format για τον Άξονα Τιμής
  5. Προσπελάστε τον Κατηγορικό Άξονα του διαγράμματος και ορίστε τις ακόλουθες ιδιότητες:
    1. Ορισμός Line format για τις κύριες γραμμές πλέγματος του Κατηγορικού Άξονα
    2. Ορισμός Line format για τις δευτερεύουσες γραμμές πλέγματος του Κατηγορικού Άξονα
    3. Ορισμός Text Properties για τα δεδομένα του Κατηγορικού Άξονα
    4. Ορισμός Title για τον Κατηγορικό Άξονα
    5. Ορισμός Label Positioning για τον Κατηγορικό Άξονα
    6. Ορισμός Rotation Angle για τις ετικέτες του Κατηγορικού Άξονα
  6. Προσπελάστε το Υπόμνημα του διαγράμματος και ορίστε τις Text Properties για αυτό.
  7. Ορίστε την εμφάνιση των υπομνημάτων του διαγράμματος χωρίς να επικαλύπτονται το διάγραμμα.
  8. Προσπελάστε τον Secondary Value Axis του διαγράμματος και ορίστε τις ακόλουθες ιδιότητες:
    1. Ενεργοποίηση του δευτερογενούς Value Axis
    2. Ορισμός Line Format για τον δευτερογενή Άξονα Τιμής
    3. Ορισμός Number Format για τον δευτερογενή Άξονα Τιμής
    4. Ορισμός Min, Max, Major and Minor units για τον δευτερογενή Άξονα Τιμής
  9. Τώρα σχεδιάστε τη πρώτη σειρά του διαγράμματος στον δευτερογενή Άξονα Τιμής
  10. Ορίστε το χρώμα γεμίσματος του πίσω τοίχου του διαγράμματος
  11. Ορίστε το χρώμα γεμίσματος της περιοχής σχεδίασης του διαγράμματος
  12. Γράψτε την τροποποιημένη παρουσίαση σε αρχείο PPTX
// Δημιουργία παρουσίασης// Δημιουργία παρουσίασης
Presentation pres = new Presentation();

// Πρόσβαση στην πρώτη διαφάνεια
ISlide slide = pres.Slides[0];

// Προσθήκη δείγματος διαγράμματος
IChart chart = slide.Shapes.AddChart(ChartType.LineWithMarkers, 50, 50, 500, 400);

// Ορισμός τίτλου διαγράμματος
chart.HasTitle = true;
chart.ChartTitle.AddTextFrameForOverriding("");
IPortion chartTitle = chart.ChartTitle.TextFrameForOverriding.Paragraphs[0].Portions[0];
chartTitle.Text = "Sample Chart";
chartTitle.PortionFormat.FillFormat.FillType = FillType.Solid;
chartTitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
chartTitle.PortionFormat.FontHeight = 20;
chartTitle.PortionFormat.FontBold = NullableBool.True;
chartTitle.PortionFormat.FontItalic = NullableBool.True;

// Ορισμός μορφής κύριων γραμμών πλέγματος για άξονα τιμής
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Blue;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.Width = 5;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.DashStyle = LineDashStyle.DashDot;

// Ορισμός μορφής δευτερευόντων γραμμών πλέγματος για άξονα τιμής
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Red;
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.Width = 3;

// Ορισμός αριθμητικής μορφής άξονα τιμής
chart.Axes.VerticalAxis.IsNumberFormatLinkedToSource = false;
chart.Axes.VerticalAxis.DisplayUnit = DisplayUnitType.Thousands;
chart.Axes.VerticalAxis.NumberFormat = "0.0%";

// Ορισμός μέγιστων και ελάχιστων τιμών διαγράμματος
chart.Axes.VerticalAxis.IsAutomaticMajorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMaxValue = false;
chart.Axes.VerticalAxis.IsAutomaticMinorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMinValue = false;

chart.Axes.VerticalAxis.MaxValue = 15f;
chart.Axes.VerticalAxis.MinValue = -2f;
chart.Axes.VerticalAxis.MinorUnit = 0.5f;
chart.Axes.VerticalAxis.MajorUnit = 2.0f;

// Ορισμός ιδιοτήτων κειμένου άξονα τιμής
IChartPortionFormat txtVal = chart.Axes.VerticalAxis.TextFormat.PortionFormat;
txtVal.FontBold = NullableBool.True;
txtVal.FontHeight = 16;
txtVal.FontItalic = NullableBool.True;
txtVal.FillFormat.FillType = FillType.Solid; ;
txtVal.FillFormat.SolidFillColor.Color = Color.DarkGreen;
txtVal.LatinFont = new FontData("Times New Roman");

// Ορισμός τίτλου άξονα τιμής
chart.Axes.VerticalAxis.HasTitle = true;
chart.Axes.VerticalAxis.Title.AddTextFrameForOverriding("");
IPortion valtitle = chart.Axes.VerticalAxis.Title.TextFrameForOverriding.Paragraphs[0].Portions[0];
valtitle.Text = "Primary Axis";
valtitle.PortionFormat.FillFormat.FillType = FillType.Solid;
valtitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
valtitle.PortionFormat.FontHeight = 20;
valtitle.PortionFormat.FontBold = NullableBool.True;
valtitle.PortionFormat.FontItalic = NullableBool.True;

// Ορισμός μορφής γραμμής άξονα τιμής : Τώρα παρωχημένο
// chart.Axes.VerticalAxis.aVerticalAxis.l.AxisLine.Width = 10;
// chart.Axes.VerticalAxis.AxisLine.FillFormat.FillType = FillType.Solid;
// Chart.Axes.VerticalAxis.AxisLine.FillFormat.SolidFillColor.Color = Color.Red;

// Ορισμός μορφής κύριων γραμμών πλέγματος για άξονα Κατηγορίας
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Green;
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.Width = 5;

// Ορισμός μορφής δευτερευόντων γραμμών πλέγματος για άξονα Κατηγορίας
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Yellow;
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.Width = 3;

// Ορισμός ιδιοτήτων κειμένου άξονα Κατηγορίας
IChartPortionFormat txtCat = chart.Axes.HorizontalAxis.TextFormat.PortionFormat;
txtCat.FontBold = NullableBool.True;
txtCat.FontHeight = 16;
txtCat.FontItalic = NullableBool.True;
txtCat.FillFormat.FillType = FillType.Solid; ;
txtCat.FillFormat.SolidFillColor.Color = Color.Blue;
txtCat.LatinFont = new FontData("Arial");

// Ορισμός τίτλου Κατηγορίας
chart.Axes.HorizontalAxis.HasTitle = true;
chart.Axes.HorizontalAxis.Title.AddTextFrameForOverriding("");

IPortion catTitle = chart.Axes.HorizontalAxis.Title.TextFrameForOverriding.Paragraphs[0].Portions[0];
catTitle.Text = "Sample Category";
catTitle.PortionFormat.FillFormat.FillType = FillType.Solid;
catTitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
catTitle.PortionFormat.FontHeight = 20;
catTitle.PortionFormat.FontBold = NullableBool.True;
catTitle.PortionFormat.FontItalic = NullableBool.True;

// Ορισμός θέσης ετικετών άξονα Κατηγορίας
chart.Axes.HorizontalAxis.TickLabelPosition = TickLabelPositionType.Low;

// Ορισμός γωνίας περιστροφής ετικετών άξονα Κατηγορίας
chart.Axes.HorizontalAxis.TickLabelRotationAngle = 45;

// Ορισμός ιδιοτήτων κειμένου υπομνήματος
IChartPortionFormat txtleg = chart.Legend.TextFormat.PortionFormat;
txtleg.FontBold = NullableBool.True;
txtleg.FontHeight = 16;
txtleg.FontItalic = NullableBool.True;
txtleg.FillFormat.FillType = FillType.Solid; ;
txtleg.FillFormat.SolidFillColor.Color = Color.DarkRed;

// Ορισμός εμφάνισης υπομνήματος διαγράμματος χωρίς επικάλυψη διαγράμματος

chart.Legend.Overlay = true;
            
// Σχεδίαση πρώτης σειράς στον δευτερεύοντα άξονα τιμής
// Chart.ChartData.Series[0].PlotOnSecondAxis = true;

// Ορισμός χρώματος πίσω τοίχου διαγράμματος
chart.BackWall.Thickness = 1;
chart.BackWall.Format.Fill.FillType = FillType.Solid;
chart.BackWall.Format.Fill.SolidFillColor.Color = Color.Orange;

chart.Floor.Format.Fill.FillType = FillType.Solid;
chart.Floor.Format.Fill.SolidFillColor.Color = Color.Red;
// Ορισμός χρώματος περιοχής σχεδίασης
chart.PlotArea.Format.Fill.FillType = FillType.Solid;
chart.PlotArea.Format.Fill.SolidFillColor.Color = Color.LightCyan;

// Αποθήκευση παρουσίασης
pres.Save("FormattedChart_out.pptx", SaveFormat.Pptx);

Ορισμός Ιδιοτήτων Γραμματοσειράς για ένα Διάγραμμα

Το Aspose.Slides για .NET παρέχει υποστήριξη για τον ορισμό των ιδιοτήτων σχετικών με τη γραμματοσειρά για το διάγραμμα. Παρακαλώ ακολουθήστε τα παρακάτω βήματα για να ορίσετε τις ιδιότητες γραμματοσειράς για το διάγραμμα.

  • Δημιουργήστε αντικείμενο κλάσης Presentation.
  • Προσθέστε διάγραμμα στη διαφάνεια.
  • Ορίστε το ύψος της γραμματοσειράς.
  • Αποθηκεύστε την τροποποιημένη παρουσίαση.

Παρατίθεται παράδειγμα δείγματος.

using (Presentation pres = new Presentation())
{               
    IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 500, 400);
    chart.TextFormat.PortionFormat.FontHeight = 20;
    chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;
    pres.Save("FontPropertiesForChart.pptx", SaveFormat.Pptx);
}

Ορισμός Αριθμητικής Μορφής

Το Aspose.Slides για .NET παρέχει ένα απλό API για τη διαχείριση της μορφής δεδομένων του διαγράμματος:

  1. Δημιουργήστε ένα παράδειγμα της κλάσης Presentation.
  2. Αποκτήστε μια αναφορά στη διαφάνεια με το δείκτη της.
  3. Προσθέστε ένα διάγραμμα με προεπιλεγμένα δεδομένα και οποιουδήποτε επιθυμητού τύπου (αυτό το παράδειγμα χρησιμοποιεί ChartType.ClusteredColumn).
  4. Ορίστε την προεπιλεγμένη αριθμητική μορφή από τις διαθέσιμες προεπιλεγμένες τιμές.
  5. Περιηγηθείτε στα κελιά δεδομένων του διαγράμματος σε κάθε σειρά και ορίστε τη μορφή αριθμού των δεδομένων του διαγράμματος.
  6. Αποθηκεύστε την παρουσίαση.
  7. Ορίστε προσαρμοσμένη αριθμητική μορφή.
  8. Περιηγηθείτε στα κελιά δεδομένων του διαγράμματος σε κάθε σειρά και ορίστε διαφορετική μορφή αριθμού για τα δεδομένα.
  9. Αποθηκεύστε την παρουσίαση.
// Δημιουργία της παρουσίασης// Δημιουργία της παρουσίασης
Presentation pres = new Presentation();

// Πρόσβαση στην πρώτη διαφάνεια παρουσίασης
ISlide slide = pres.Slides[0];

// Προσθήκη προεπιλεγμένου ομαδοποιημένου διαγράμματος στηλών
IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 400);

// Πρόσβαση στη συλλογή σειρών του διαγράμματος
IChartSeriesCollection series = chart.ChartData.Series;

// Ορισμός προεπιλεγμένης αριθμητικής μορφής
// Διαπέραση κάθε σειράς διαγράμματος
foreach (ChartSeries ser in series)
{
    // Διαπέραση κάθε κελιού δεδομένων στη σειρά
    foreach (IChartDataPoint cell in ser.DataPoints)
    {
        // Ορισμός της μορφής αριθμού
        cell.Value.AsCell.PresetNumberFormat = 10; //0.00%
    }
}

// Αποθήκευση παρουσίασης
pres.Save("PresetNumberFormat_out.pptx", SaveFormat.Pptx);

Οι πιθανές προεπιλεγμένες τιμές μορφοποίησης αριθμών μαζί με τον αντίστοιχο δείκτη τους και που μπορούν να χρησιμοποιηθούν δίνονται παρακάτω:

0 Γενικό
1 0
2 0.00
3 #,##0
4 #,##0.00
5 $#,##0;$-#,##0
6 $#,##0;Red$-#,##0
7 $#,##0.00;$-#,##0.00
8 $#,##0.00;Red$-#,##0.00
9 0%
10 0.00%
11 0.00E+00
12 # ?/?
13 # /
14 m/d/yy
15 d-mmm-yy
16 d-mmm
17 mmm-yy
18 h:mm AM/PM
19 h:mm:ss AM/PM
20 h:mm
21 h:mm:ss
22 m/d/yy h:mm
37 #,##0;-#,##0
38 #,##0;Red-#,##0
39 #,##0.00;-#,##0.00
40 #,##0.00;Red-#,##0.00
41 _ * #,##0_ ;_ * “_ ;_ @_
42 _ $* #,##0_ ;_ $* “_ ;_ @_
43 _ * #,##0.00_ ;_ * “??_ ;_ @_
44 _ $* #,##0.00_ ;_ $* “??_ ;_ @_
45 mm:ss
46 h:mm:ss
47 mm:ss.0
48 ##0.0E+00
49 @

Ορισμός Στρογγυλεμένων Άκρων Περιοχής Διαγράμματος

Το Aspose.Slides για .NET παρέχει υποστήριξη για τον ορισμό της περιοχής του διαγράμματος. Οι ιδιότητες IChart.HasRoundedCorners και Chart.HasRoundedCorners έχουν προστεθεί στο Aspose.Slides.

  1. Δημιουργήστε αντικείμενο κλάσης Presentation.
  2. Προσθέστε διάγραμμα στη διαφάνεια.
  3. Ορίστε τον τύπο γεμίσματος και το χρώμα γεμίσματος του διαγράμματος
  4. Ορίστε την ιδιότητα στρογγυλεμένων γωνιών σε True.
  5. Αποθηκεύστε την τροποποιημένη παρουσίαση.
using (Presentation presentation = new Presentation())
{
	ISlide slide = presentation.Slides[0];
	IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 100, 600, 400);
	chart.LineFormat.FillFormat.FillType = FillType.Solid;
	chart.LineFormat.Style = LineStyle.Single;
	chart.HasRoundedCorners = true;

	presentation.Save("out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

Συχνές Ερωτήσεις

Μπορώ να ορίσω ημιδιαφανείς γεμίσεις για στήλες/περιοχές διατηρώντας το περίγραμμα αδιαφανές;

Ναι. Η διαφάνεια της γεμίσματος και το περίγραμμα ρυθμίζονται ξεχωριστά. Αυτό είναι χρήσιμο για τη βελτίωση της αναγνωσιμότητας του πλέγματος και των δεδομένων σε πυκνές απεικονίσεις.

Πώς μπορώ να αντιμετωπίσω τις ετικέτες δεδομένων όταν επικαλύπτονται;

Μειώστε το μέγεθος της γραμματοσειράς, απενεργοποιήστε μη απαραίτητα στοιχεία ετικετών (π.χ. κατηγορίες), ορίστε την απόσταση/θέση της ετικέτας, εμφανίστε ετικέτες μόνο για επιλεγμένα σημεία εφόσον χρειάζεται, ή αλλάξτε τη μορφή σε “value + legend”.

Μπορώ να εφαρμόσω κλίσεις ή γεμίσεις με μοτίβο σε σειρές;

Ναι. Συνήθως είναι διαθέσιμες τόσο γεμίσεις στερεού χρώματος όσο και κλίσεις/μοτίβα. Στην πράξη, χρησιμοποιήστε κλίσεις με μέτρο και αποφύγετε συνδυασμούς που μειώνουν την αντίθεση με το πλέγμα και το κείμενο.