Μορφοποίηση Διαγραμμάτων Παρουσίασης σε Java
Επισκόπηση
Αυτό το άρθρο εξηγεί πώς να μορφοποιήσετε διαγράμματα σε παρουσιάσεις PowerPoint χρησιμοποιώντας το Aspose.Slides. Δείχνει πώς να προσαρμόσετε βασικά στοιχεία του διαγράμματος όπως άξονες, γραμμές πλέγματος, τίτλους, υπομνήματα, την περιοχή σχεδίασης και γεμίσματα τοίχου για να βελτιώσετε την εμφάνιση και την αναγνωσιμότητα των δεδομένων του διαγράμματος.
Επίσης, επιδεικνύει πώς να ορίσετε ιδιότητες γραμματοσειράς για το κείμενο του διαγράμματος, να εφαρμόσετε προκαθορισμένες και προσαρμοσμένες αριθμητικές μορφές στα δεδομένα του διαγράμματος και να ενεργοποιήσετε στρογγυλεμένες γωνίες για την περιοχή του διαγράμματος. Μαζί, αυτά τα παραδείγματα δείχνουν πώς να ελέγξετε τόσο το οπτικό στυλ όσο και την παρουσίαση των δεδομένων των διαγραμμάτων σε μια παρουσίαση.
Μορφοποίηση Οντοτήτων Διαγράμματος
Το Aspose.Slides for Java επιτρέπει στους προγραμματιστές να προσθέτουν προσαρμοσμένα διαγράμματα στις διαφάνειές τους από το μηδέν. Αυτό το άρθρο εξηγεί πώς να μορφοποιήσετε διαφορετικές οντότητες διαγράμματος συμπεριλαμβανομένων των αξόνων κατηγορίας και τιμών.
Το Aspose.Slides for Java παρέχει ένα απλό API για τη διαχείριση διαφορετικών οντοτήτων διαγράμματος και τη μορφοποίησή τους με προσαρμοσμένες τιμές:
- Δημιουργήστε ένα στιγμιότυπο της Presentation κλάσης.
- Λάβετε την αναφορά μιας διαφάνειας με βάση το ευρετήριο της.
- Προσθέστε ένα διάγραμμα με προεπιλεγμένα δεδομένα μαζί με οποιονδήποτε επιθυμητό τύπο (σε αυτό το παράδειγμα θα χρησιμοποιήσουμε ChartType.LineWithMarkers).
- Προσπελάστε τον Άξονα Τιμών του διαγράμματος και ορίστε τις ακόλουθες ιδιότητες:
- Ορισμός Μορφή Γραμμής για τις κύριες γραμμές πλέγματος του Άξονα Τιμών
- Ορισμός Μορφή Γραμμής για τις δευτερεύουσες γραμμές πλέγματος του Άξονα Τιμών
- Ορισμός Μορφή Αριθμού για τον Άξονα Τιμών
- Ορισμός Min, Max, Major και Minor μονάδων για τον Άξονα Τιμών
- Ορισμός Ιδιοτήτων Κειμένου για τα δεδομένα του Άξονα Τιμών
- Ορισμός Τίτλου για τον Άξονα Τιμών
- Ορισμός Μορφή Γραμμής για τον Άξονα Τιμών
- Προσπελάστε τον Άξονα Κατηγορίας του διαγράμματος και ορίστε τις ακόλουθες ιδιότητες:
- Ορισμός Μορφή Γραμμής για τις κύριες γραμμές πλέγματος του Άξονα Κατηγορίας
- Ορισμός Μορφή Γραμμής για τις δευτερεύουσες γραμμές πλέγματος του Άξονα Κατηγορίας
- Ορισμός Ιδιοτήτων Κειμένου για τα δεδομένα του Άξονα Κατηγορίας
- Ορισμός Τίτλου για τον Άξονα Κατηγορίας
- Ορισμός Τοποθέτηση Ετικετών για τον Άξονα Κατηγορίας
- Ορισμός Γωνίας Περιστροφής για τις ετικέτες του Άξονα Κατηγορίας
- Προσπελάστε το Υπόμνημα του διαγράμματος και ορίστε τις Ιδιότητες Κειμένου για αυτό.
- Εμφανίστε τα Υπομνήματα χωρίς να επικάθονται στο διάγραμμα.
- Προσπελάστε τον Δευτερεύον Άξονα Τιμών και ορίστε τις ακόλουθες ιδιότητες:
- Ενεργοποιήστε τον Δευτερεύον Άξονα Τιμών
- Ορισμός Μορφή Γραμμής για τον Δευτερεύοντα Άξονα Τιμών
- Ορισμός Μορφή Αριθμού για τον Δευτερεύοντα Άξονα Τιμών
- Ορισμός Min, Max, Major και Minor μονάδων για τον Δευτερεύοντα Άξονα Τιμών
- Τώρα σχεδιάστε την πρώτη σειρά διαγράμματος στον Δευτερεύοντα Άξονα Τιμών.
- Ορίστε το χρώμα γεμίσματος του πίσω τοίχου του διαγράμματος.
- Ορίστε το χρώμα γεμίσματος της περιοχής σχεδίασης του διαγράμματος.
- Γράψτε την τροποποιημένη παρουσίαση σε αρχείο PPTX.
// Δημιουργία ενός στιγμιότυπου της κλάσης Presentation
Presentation pres = new Presentation();
try {
// Πρόσβαση στην πρώτη διαφάνεια
ISlide slide = pres.getSlides().get_Item(0);
// Προσθήκη του δείγματος διαγράμματος
IChart chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 50, 50, 500, 400);
// Ορισμός Τίτλου Διαγράμματος
chart.hasTitle();
chart.getChartTitle().addTextFrameForOverriding("");
IPortion chartTitle = chart.getChartTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0);
chartTitle.setText("Sample Chart");
chartTitle.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
chartTitle.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
chartTitle.getPortionFormat().setFontHeight(20);
chartTitle.getPortionFormat().setFontBold(NullableBool.True);
chartTitle.getPortionFormat().setFontItalic(NullableBool.True);
// Ορισμός μορφής κυρίων γραμμών πλέγματος για τον άξονα τιμών
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().setWidth(5);
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().setDashStyle(LineDashStyle.DashDot);
// Ορισμός μορφής δευτερευουσών γραμμών πλέγματος για τον άξονα τιμών
chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.RED);
chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().setWidth(3);
// Ορισμός μορφής αριθμού του άξονα τιμών
chart.getAxes().getVerticalAxis().isNumberFormatLinkedToSource();
chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Thousands);
chart.getAxes().getVerticalAxis().setNumberFormat("0.0%");
// Ορισμός μέγιστων και ελάχιστων τιμών διαγράμματος
chart.getAxes().getVerticalAxis().isAutomaticMajorUnit();
chart.getAxes().getVerticalAxis().isAutomaticMaxValue();
chart.getAxes().getVerticalAxis().isAutomaticMinorUnit();
chart.getAxes().getVerticalAxis().isAutomaticMinValue();
chart.getAxes().getVerticalAxis().setMaxValue(15f);
chart.getAxes().getVerticalAxis().setMinValue(-2f);
chart.getAxes().getVerticalAxis().setMinorUnit(0.5f);
chart.getAxes().getVerticalAxis().setMajorUnit(2.0f);
// Ορισμός Ιδιοτήτων Κειμένου Άξονα Τιμών
IChartPortionFormat txtVal = chart.getAxes().getVerticalAxis().getTextFormat().getPortionFormat();
txtVal.setFontBold(NullableBool.True);
txtVal.setFontHeight(16);
txtVal.setFontItalic(NullableBool.True);
txtVal.getFillFormat().setFillType(FillType.Solid);
txtVal.getFillFormat().getSolidFillColor().setColor(new Color(PresetColor.DarkGreen));
txtVal.setLatinFont(new FontData("Times New Roman"));
// Ορισμός τίτλου άξονα τιμών
chart.getAxes().getVerticalAxis().hasTitle();
chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("");
IPortion valtitle = chart.getAxes().getVerticalAxis().getTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0);
valtitle.setText("Primary Axis");
valtitle.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
valtitle.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
valtitle.getPortionFormat().setFontHeight(20);
valtitle.getPortionFormat().setFontBold(NullableBool.True);
valtitle.getPortionFormat().setFontItalic(NullableBool.True);
// Ορισμός μορφής κυρίων γραμμών πλέγματος για τον άξονα Κατηγορίας
chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.GREEN);
chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().setWidth(5);
// Ορισμός μορφής δευτερευουσών γραμμών πλέγματος για τον άξονα Κατηγορίας
chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid);
chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.YELLOW);
chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().setWidth(3);
// Ορισμός Ιδιοτήτων Κειμένου Άξονα Κατηγορίας
IChartPortionFormat txtCat = chart.getAxes().getHorizontalAxis().getTextFormat().getPortionFormat();
txtCat.setFontBold(NullableBool.True);
txtCat.setFontHeight(16);
txtCat.setFontItalic(NullableBool.True);
txtCat.getFillFormat().setFillType(FillType.Solid);
txtCat.getFillFormat().getSolidFillColor().setColor(Color.BLUE);
txtCat.setLatinFont(new FontData("Arial"));
// Ορισμός Τίτλου Κατηγορίας
chart.getAxes().getHorizontalAxis().hasTitle();
chart.getAxes().getHorizontalAxis().getTitle().addTextFrameForOverriding("");
IPortion catTitle = chart.getAxes().getHorizontalAxis().getTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0);
catTitle.setText("Sample Category");
catTitle.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
catTitle.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY);
catTitle.getPortionFormat().setFontHeight(20);
catTitle.getPortionFormat().setFontBold(NullableBool.True);
catTitle.getPortionFormat().setFontItalic(NullableBool.True);
// Ορισμός θέση ετικέτας άξονα κατηγορίας
chart.getAxes().getHorizontalAxis().setTickLabelPosition(TickLabelPositionType.Low);
// Ορισμός γωνίας περιστροφής ετικέτας άξονα κατηγορίας
chart.getAxes().getHorizontalAxis().setTickLabelRotationAngle(45);
// Ορισμός Ιδιοτήτων Κειμένου Υπομνημάτων
IChartPortionFormat txtleg = chart.getLegend().getTextFormat().getPortionFormat();
txtleg.setFontBold(NullableBool.True);
txtleg.setFontHeight(16);
txtleg.setFontItalic(NullableBool.True);
txtleg.getFillFormat().setFillType(FillType.Solid);
txtleg.getFillFormat().getSolidFillColor().setColor(new Color(PresetColor.DarkRed));
// Εμφάνιση υπομνημάτων διαγράμματος χωρίς επικάλυψη
chart.getLegend().setOverlay(true);
// chart.ChartData.Series[0].PlotOnSecondAxis=true;
chart.getChartData().getSeries().get_Item(0).setPlotOnSecondAxis(true);
// Ορισμός δευτερεύοντος άξονα τιμών
chart.getAxes().getSecondaryVerticalAxis().isVisible();
chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setStyle(LineStyle.ThickBetweenThin);
chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setWidth(20);
// Ορισμός μορφής αριθμού δευτερεύοντος άξονα τιμών
chart.getAxes().getSecondaryVerticalAxis().isNumberFormatLinkedToSource();
chart.getAxes().getSecondaryVerticalAxis().setDisplayUnit(DisplayUnitType.Hundreds);
chart.getAxes().getSecondaryVerticalAxis().setNumberFormat("0.0%");
// Ορισμός μέγιστων και ελάχιστων τιμών διαγράμματος
chart.getAxes().getSecondaryVerticalAxis().isAutomaticMajorUnit();
chart.getAxes().getSecondaryVerticalAxis().isAutomaticMaxValue();
chart.getAxes().getSecondaryVerticalAxis().isAutomaticMinorUnit();
chart.getAxes().getSecondaryVerticalAxis().isAutomaticMinValue();
chart.getAxes().getSecondaryVerticalAxis().setMaxValue(20f);
chart.getAxes().getSecondaryVerticalAxis().setMinValue(-5f);
chart.getAxes().getSecondaryVerticalAxis().setMinorUnit(0.5f);
chart.getAxes().getSecondaryVerticalAxis().setMajorUnit(2.0f);
// Ορισμός χρώματος πίσω τοίχου διαγράμματος
chart.getBackWall().setThickness(1);
chart.getBackWall().getFormat().getFill().setFillType(FillType.Solid);
chart.getBackWall().getFormat().getFill().getSolidFillColor().setColor(Color.ORANGE);
chart.getFloor().getFormat().getFill().setFillType(FillType.Solid);
chart.getFloor().getFormat().getFill().getSolidFillColor().setColor(Color.RED);
// Ορισμός χρώματος περιοχής σχεδίασης
chart.getPlotArea().getFormat().getFill().setFillType(FillType.Solid);
chart.getPlotArea().getFormat().getFill().getSolidFillColor().setColor(new Color(PresetColor.LightCyan));
// Αποθήκευση Παρουσίασης
pres.save("FormattedChart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ορισμός Ιδιοτήτων Γραμματοσειράς για Διάγραμμα
Το Aspose.Slides for Java παρέχει υποστήριξη για τον ορισμό ιδιοτήτων γραμματοσειράς για το διάγραμμα. Ακολουθήστε τα παρακάτω βήματα για να ρυθμίσετε τις ιδιότητες γραμματοσειράς του διαγράμματος.
- Δημιουργήστε ένα αντικείμενο κλάσης Presentation.
- Προσθέστε διάγραμμα στη διαφάνεια.
- Ορίστε το ύψος γραμματοσειράς.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
Παρατίθεται παρακάτω παράδειγμα κώδικα.
// Δημιουργία ενός στιγμιότυπου της κλάσης Presentation
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 500, 400);
chart.getTextFormat().getPortionFormat().setFontHeight(20);
chart.getChartData().getSeries().get_Item(0).getLabels().getDefaultDataLabelFormat().setShowValue(true);
pres.save("FontPropertiesForChart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ορισμός Αριθμητικής Μορφής
Το Aspose.Slides for Java παρέχει ένα απλό API για τη διαχείριση της μορφής δεδομένων του διαγράμματος:
- Δημιουργήστε ένα στιγμιότυπο της Presentation κλάσης.
- Λάβετε την αναφορά μιας διαφάνειας με βάση το ευρετήριο της.
- Προσθέστε ένα διάγραμμα με προεπιλεγμένα δεδομένα μαζί με οποιονδήποτε επιθυμητό τύπο (σε αυτό το παράδειγμα χρησιμοποιείται ChartType.ClusteredColumn).
- Ορίστε την προκαθορισμένη μορφή αριθμού από τις διαθέσιμες προκαθορισμένες τιμές.
- Περπατήστε μέσα από τα κελιά δεδομένων του διαγράμματος σε κάθε σειρά και ορίστε τη μορφή αριθμού των δεδομένων.
- Αποθηκεύστε την παρουσίαση.
- Ορίστε την προσαρμοσμένη μορφή αριθμού.
- Περπατήστε μέσα από τα κελιά δεδομένων σε κάθε σειρά και ορίστε διαφορετική μορφή αριθμού για τα δεδομένα.
- Αποθηκεύστε την παρουσίαση.
// Δημιουργία ενός στιγμιότυπου της κλάσης Presentation
Presentation pres = new Presentation();
try {
// Πρόσβαση στην πρώτη διαφάνεια παρουσίασης
ISlide slide = pres.getSlides().get_Item(0);
// Προσθήκη προεπιλεγμένου διαγράμματος ομαδοποιημένων στηλών
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 400);
// Πρόσβαση στη συλλογή σειρών του διαγράμματος
IChartSeriesCollection series = chart.getChartData().getSeries();
// Διαπέραση όλων των σειρών του διαγράμματος
for (IChartSeries ser : series)
{
// Διαπέραση κάθε κελιού δεδομένων στη σειρά
for (IChartDataPoint cell : ser.getDataPoints())
{
// Ορισμός μορφής αριθμού
cell.getValue().getAsCell().setPresetNumberFormat((byte) 10); // 0.00%
}
}
// Αποθήκευση παρουσίασης
pres.save("PresetNumberFormat.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Οι δυνατές προκαθορισμένες τιμές μορφής αριθμού μαζί με το αντίστοιχο δείκτη τους είναι οι εξής:
| 0 | General |
|---|---|
| 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 for Java παρέχει υποστήριξη για τον καθορισμό περιοχής διαγράμματος. Οι μέθοδοι hasRoundedCorners και setRoundedCorners έχουν προστεθεί στη διεπαφή IChart και στην κλάση Chart.
- Δημιουργήστε ένα αντικείμενο κλάσης Presentation.
- Προσθέστε διάγραμμα στη διαφάνεια.
- Ορίστε τον τύπο γεμίσματος και το χρώμα γεμίσματος του διαγράμματος.
- Ορίστε την ιδιότητα στρογγυλεμένων γωνιών σε True.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
Παρατίθεται παρακάτω παράδειγμα κώδικα.
// Δημιουργία ενός στιγμιότυπου της κλάσης Presentation
Presentation pres = new Presentation();
try {
ISlide slide = pres.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 100, 600, 400);
chart.getLineFormat().getFillFormat().setFillType(FillType.Solid);
chart.getLineFormat().setStyle(LineStyle.Single);
chart.setRoundedCorners(true);
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
ΣΥΝΧΩΜΑΤΙΚΕΣ ΕΡΩΤΗΣΕΙΣ (FAQ)
Μπορώ να ορίσω ημιδιαφανή γεμίσματα για στήλες/περιοχές διατηρώντας το περίγραμμα αδιαφανές;
Ναι. Η διαφάνεια του γεμίσματος και το περίγραμμα ρυθμίζονται ξεχωριστά. Αυτό είναι χρήσιμο για τη βελτίωση της αναγνωσιμότητας του πλέγματος και των δεδομένων σε πυκνές οπτικοποιήσεις.
Πώς μπορώ να αντιμετωπίσω τις ετικέτες δεδομένων όταν επικαλύπτονται;
Μειώστε το μέγεθος της γραμματοσειράς, απενεργοποιήστε μη απαραίτητα στοιχεία ετικετών (π.χ. κατηγορίες), ορίστε την απόσταση/θέση της ετικέτας, εμφανίστε ετικέτες μόνο για επιλεγμένα σημεία εάν χρειάζεται, ή αλλάξτε τη μορφή σε «τιμή + υπόμνημα».
Μπορώ να εφαρμόσω διαβαθμισμένες ή μοτίβο‑γεμίσματα σε σειρές;
Ναι. Συνήθως είναι διαθέσιμα τόσο τα γεμίσματα στερεά όσο και τα διαβαθμισμένα/μοτίβο. Στην πράξη, χρησιμοποιήστε τις διαβαθμίσεις με μέτρο και αποφύγετε συνδυασμούς που μειώνουν την αντίθεση με το πλέγμα και το κείμενο.