Diagrammformatierung in Java
Diagramm-Entitäten formatieren
Aspose.Slides for Java ermöglicht Entwicklern, benutzerdefinierte Diagramme von Grund auf zu ihren Folien hinzuzufügen. Dieser Artikel erklärt, wie verschiedene Diagramm‑Entitäten formatiert werden, einschließlich der Diagramm‑Kategorie‑ und Werteachse.
Aspose.Slides for Java bietet eine einfache API zur Verwaltung verschiedener Diagramm‑Entitäten und deren Formatierung mit benutzerdefinierten Werten:
- Erstellen Sie eine Instanz der Presentation Klasse.
- Holen Sie sich die Referenz einer Folie über ihren Index.
- Fügen Sie ein Diagramm mit Standarddaten hinzu, wobei Sie einen gewünschten Typ wählen (in diesem Beispiel verwenden wir ChartType.LineWithMarkers).
- Greifen Sie auf die Werteachse des Diagramms zu und setzen Sie die folgenden Eigenschaften:
- Festlegen des Linienformats für Hauptgitternetzlinien der Werteachse
- Festlegen des Linienformats für Hilfsgitternetzlinien der Werteachse
- Festlegen des Zahlenformats für die Werteachse
- Festlegen von Min-, Max‑, Haupt‑ und Nebeneinheiten für die Werteachse
- Festlegen der Texteigenschaften für die Daten der Werteachse
- Festlegen des Titels für die Werteachse
- Festlegen des Linienformats für die Werteachse
- Greifen Sie auf die Kategorienachse des Diagramms zu und setzen Sie die folgenden Eigenschaften:
- Festlegen des Linienformats für Hauptgitternetzlinien der Kategorienachse
- Festlegen des Linienformats für Hilfsgitternetzlinien der Kategorienachse
- Festlegen der Texteigenschaften für die Daten der Kategorienachse
- Festlegen des Titels für die Kategorienachse
- Festlegen der Beschriftungsposition für die Kategorienachse
- Festlegen des Drehwinkels für die Beschriftungen der Kategorienachse
- Greifen Sie auf die Legende des Diagramms zu und legen Sie die Texteigenschaften dafür fest
- Stellen Sie die Anzeige der Diagrammlegenden so ein, dass sie das Diagramm nicht überlappen
- Greifen Sie auf die sekundäre Werteachse des Diagramms zu und setzen Sie die folgenden Eigenschaften:
- Aktivieren Sie die sekundäre Werteachse
- Festlegen des Linienformats für die sekundäre Werteachse
- Festlegen des Zahlenformats für die sekundäre Werteachse
- Festlegen von Min‑, Max‑, Haupt‑ und Nebeneinheiten für die sekundäre Werteachse
- Plotten Sie nun die erste Diagrammserie auf der sekundären Werteachse
- Legen Sie die Füllfarbe der Rückwand des Diagramms fest.
- Legen Sie die Füllfarbe des Plotbereichs des Diagramms fest.
- Schreiben Sie die modifizierte Präsentation in eine PPTX‑Datei.
// Erstellen Sie eine Instanz der Presentation-Klasse
Presentation pres = new Presentation();
try {
// Zugriff auf die erste Folie
ISlide slide = pres.getSlides().get_Item(0);
// Hinzufügen des Beispiel-Diagramms
IChart chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 50, 50, 500, 400);
// Festlegen des Diagrammtitels
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);
// Festlegen des Formats der Hauptgitternetzlinien für die Werteachse
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);
// Festlegen des Formats der Hilfsgitternetzlinien für die Werteachse
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);
// Festlegen des Zahlenformats der Werteachse
chart.getAxes().getVerticalAxis().isNumberFormatLinkedToSource();
chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Thousands);
chart.getAxes().getVerticalAxis().setNumberFormat("0.0%");
// Festlegen von maximalen und minimalen Werten des Diagramms
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);
// Festlegen der Texteigenschaften der Werteachse
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"));
// Festlegen des Titels der Werteachse
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);
// Festlegen des Formats der Hauptgitternetzlinien für die Kategorienachse
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);
// Festlegen des Formats der Hilfsgitternetzlinien für die Kategorienachse
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);
// Festlegen der Texteigenschaften der Kategorienachse
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"));
// Festlegen des Kategorienamens
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);
// Festlegen der Beschriftungsposition der Kategorienachse
chart.getAxes().getHorizontalAxis().setTickLabelPosition(TickLabelPositionType.Low);
// Festlegen des Rotationswinkels der Beschriftungen der Kategorienachse
chart.getAxes().getHorizontalAxis().setTickLabelRotationAngle(45);
// Festlegen der Texteigenschaften der Legende
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));
// Diagrammlegenden anzeigen, ohne das Diagramm zu überlappen
chart.getLegend().setOverlay(true);
// chart.ChartData.Series[0].PlotOnSecondAxis=true;
chart.getChartData().getSeries().get_Item(0).setPlotOnSecondAxis(true);
// Festlegen der sekundären Werteachse
chart.getAxes().getSecondaryVerticalAxis().isVisible();
chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setStyle(LineStyle.ThickBetweenThin);
chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setWidth(20);
// Festlegen des Zahlenformats der sekundären Werteachse
chart.getAxes().getSecondaryVerticalAxis().isNumberFormatLinkedToSource();
chart.getAxes().getSecondaryVerticalAxis().setDisplayUnit(DisplayUnitType.Hundreds);
chart.getAxes().getSecondaryVerticalAxis().setNumberFormat("0.0%");
// Festlegen von maximalen und minimalen Werten des Diagramms
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);
// Festlegen der Hintergrundwandfarbe des Diagramms
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);
// Festlegen der Farbe des Diagrammbereichs
chart.getPlotArea().getFormat().getFill().setFillType(FillType.Solid);
chart.getPlotArea().getFormat().getFill().getSolidFillColor().setColor(new Color(PresetColor.LightCyan));
// Präsentation speichern
pres.save("FormattedChart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Schrifteigenschaften für ein Diagramm festlegen
Aspose.Slides for Java unterstützt das Festlegen von schriftenbezogenen Eigenschaften für das Diagramm. Bitte folgen Sie den nachstehenden Schritten, um die Schrifteigenschaften für das Diagramm festzulegen.
- Instanziieren Sie ein Objekt der Klasse Presentation.
- Fügen Sie ein Diagramm zur Folie hinzu.
- Legen Sie die Schriftgröße fest.
- Speichern Sie die modifizierte Präsentation.
Ein Beispiel dafür ist unten angegeben.
// Erstelle eine Instanz der Presentation-Klasse
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();
}
Numerisches Format festlegen
Aspose.Slides for Java bietet eine einfache API zur Verwaltung des Diagrammdatenformats:
- Erstellen Sie eine Instanz der Presentation Klasse.
- Holen Sie sich die Referenz einer Folie über ihren Index.
- Fügen Sie ein Diagramm mit Standarddaten hinzu und wählen Sie einen gewünschten Typ (dieses Beispiel verwendet ChartType.ClusteredColumn).
- Legen Sie das voreingestellte Zahlenformat aus den möglichen Vorgabewerten fest.
- Durchlaufen Sie die Datenzellen jedes Diagramm‑Serien und setzen Sie das Zahlenformat der Diagrammdaten.
- Speichern Sie die Präsentation.
- Legen Sie das benutzerdefinierte Zahlenformat fest.
- Durchlaufen Sie die Datenzellen jeder Diagrammserie und setzen Sie ein unterschiedliches Zahlenformat für die Diagrammdaten.
- Speichern Sie die Präsentation.
// Erstelle eine Instanz der Presentation-Klasse
Presentation pres = new Presentation();
try {
// Zugriff auf die erste Folie der Präsentation
ISlide slide = pres.getSlides().get_Item(0);
// Ein Standard-ClusteredColumn-Diagramm hinzufügen
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 400);
// Zugriff auf die Diagramm-Seriensammlung
IChartSeriesCollection series = chart.getChartData().getSeries();
// Durchlaufen aller Diagrammserien
for (IChartSeries ser : series)
{
// Durchlaufen aller Datenzellen in der Serie
for (IChartDataPoint cell : ser.getDataPoints())
{
// Festlegen des Zahlenformats
cell.getValue().getAsCell().setPresetNumberFormat((byte) 10); // 0.00%
}
}
// Speichern der Präsentation
pres.save("PresetNumberFormat.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Die möglichen voreingestellten Zahlenformatwerte zusammen mit ihrem Index sind unten angegeben:
| 0 | Allgemein |
|---|---|
| 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 | @ |
Abgerundete Ränder des Diagrammbereichs festlegen
Aspose.Slides for Java unterstützt das Festlegen des Diagrammbereichs. Die Methoden hasRoundedCorners und setRoundedCorners wurden zur Schnittstelle IChart und zur Klasse Chart hinzugefügt.
- Instanziieren Sie ein Objekt der Klasse Presentation.
- Fügen Sie ein Diagramm zur Folie hinzu.
- Legen Sie den Fülltyp und die Füllfarbe des Diagramms fest.
- Setzen Sie die Eigenschaft für abgerundete Ecken auf True.
- Speichern Sie die modifizierte Präsentation.
Ein Beispiel ist unten angegeben.
// Erstelle eine Instanz der Presentation-Klasse
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
Kann ich halbtransparente Füllungen für Spalten/Bereiche setzen, während die Kontur undurchsichtig bleibt?
Ja. Die Fülltransparenz und die Kontur werden separat konfiguriert. Dies ist hilfreich, um die Lesbarkeit des Gitters und der Daten in dichten Visualisierungen zu verbessern.
Wie kann ich mit überlappenden Datenbeschriftungen umgehen?
Verringern Sie die Schriftgröße, deaktivieren Sie nicht notwendige Beschriftungskomponenten (z. B. Kategorien), setzen Sie den Beschriftungsversatz bzw. die Position, zeigen Sie bei Bedarf nur Beschriftungen für ausgewählte Punkte an oder wechseln Sie das Format zu “Wert + Legende”.
Kann ich Farbverläufe oder Musterfüllungen auf Serien anwenden?
Ja. Sowohl einfarbige als auch Verlauf‑/Musterfüllungen stehen in der Regel zur Verfügung. Verwenden Sie Verläufe sparsam und vermeiden Sie Kombinationen, die den Kontrast zum Gitter und zum Text verringern.