Diagram tengelyek testreszabása prezentációkban Java használatával
Áttekintés
Ez a cikk bemutatja, hogyan lehet testreszabni a diagram tengelyeit az Aspose.Slides for Java-val. Tárgyalja a kiszámított tengelyértékeket, a diagram sorok és oszlopok átváltását, a tengely láthatóságát, a kategória‑címke és a jelölőjel intervallumokat, a dátumkategóriákat és formázást, a cím forgatását, a tengely elhelyezését, valamint a megjelenítési egységeket.
A maximális értékek lekérése a függőleges tengelyen a diagramokon
Hozzon létre egy Presentation és adjon hozzá egy alapértelmezett adatú területdiagramot. Hívja meg a validateChartLayout metódust, mielőtt a kiszámított tengelyértékeket olvasná, hogy a diagram elrendezése naprakész legyen.
Olvassa a getActualMaxValue és a getActualMinValue a tengelyhatárokhoz, valamint a getActualMajorUnit és a getActualMinorUnit a jelölőjel intervallumokhoz. A getActualMajorUnitScale és a getActualMinorUnitScale időegység skálákat biztosítanak, amelyek a dátumtengelyeknél relevánsak. A példa ezeket az értékeket helyi változókba tárolja, és elmenti a diagramot.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Area, 100, 100, 500, 350);
chart.validateChartLayout();
double maxValue = chart.getAxes().getVerticalAxis().getActualMaxValue();
double minValue = chart.getAxes().getVerticalAxis().getActualMinValue();
double majorUnit = chart.getAxes().getVerticalAxis().getActualMajorUnit();
double minorUnit = chart.getAxes().getVerticalAxis().getActualMinorUnit();
int majorUnitScale = chart.getAxes().getVerticalAxis().getActualMajorUnitScale();
int minorUnitScale = chart.getAxes().getVerticalAxis().getActualMinorUnitScale();
presentation.save("AxisValues_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Adatok cseréje a tengelyek között
Használja a switchRowColumn metódust a sorozatok és kategóriák szerepének felcserélésére a diagram adataiban. Minden korábbi kategória sorozattá válik, és minden korábbi sorozat kategóriává. Ez megváltoztatja az adatok csoportosítását; nem cseréli fel a vízszintes és függőleges tengelyeket. A példa a setRange segítségével kötja az alapértelmezett adatokat a Sheet1!A1:D5-höz, beleértve a fejlécsort és a kategóriaoszlopot, mielőtt sorokat és oszlopokat cserélne. Négy sorozattal és három kategóriával ment egy diagramot.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 400, 300);
chart.getChartData().setRange("Sheet1!A1:D5");
chart.getChartData().switchRowColumn();
presentation.save("SwitchChartRowColumns_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Függőleges tengely letiltása vonaldiagramoknál
Hívja a setVisible metódust false értékkel a függőleges tengelyen a rejtéséhez. A példa alapértelmezett adatokkal hoz létre egy vonaldiagramot, és a függőleges tengely letiltásával menti el.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300);
chart.getAxes().getVerticalAxis().setVisible(false);
presentation.save("HiddenVerticalAxis.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Vízszintes tengely letiltása vonaldiagramoknál
Hívja a setVisible metódust false értékkel a vízszintes tengelyen a rejtéséhez. A példa alapértelmezett adatokkal hoz létre egy vonaldiagramot, és a vízszintes tengely letiltásával menti el.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300);
chart.getAxes().getHorizontalAxis().setVisible(false);
presentation.save("HiddenHorizontalAxis.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Kategória tengely módosítása
Használja a setCategoryAxisType metódust, hogy dátum vagy szöveges kategória tengelyt válasszon. Ez a példa a ExistingChart.pptx fájlt igényli, amelyben a diagram az első slide első alakzata, és a kategória cellák numerikus Excel dátumértékeket tartalmaznak. A vízszintes tengelyt dátum tengelyre változtatja. A setAutomaticMajorUnit false, a setMajorUnit 1, és a setMajorUnitScale TimeUnitType.Months beállítása egyhónapos intervallumot eredményez a fő jelölőjeleknek.
import com.aspose.slides.*;
Presentation presentation = new Presentation("ExistingChart.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = (IChart) slide.getShapes().get_Item(0);
chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date);
chart.getAxes().getHorizontalAxis().setAutomaticMajorUnit(false);
chart.getAxes().getHorizontalAxis().setMajorUnit(1);
chart.getAxes().getHorizontalAxis().setMajorUnitScale(TimeUnitType.Months);
presentation.save("ChangeChartCategoryAxis_out.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Kategória tengely címkeintervallumok szabályozása
Ha egy diagram sok kategóriát tartalmaz, csökkentse a látható tengelycímkék számát a kategóriák vagy adatelemek eltávolítása nélkül. Hívja a setAutomaticTickLabelSpacing false értékkel, majd adja meg a kívánt kategóriaintervallumot a setTickLabelSpacing metódussal. Szöveges kategóriák esetén a normál sorrendben a számozás az első kategóriától kezdődik:
| Intervallum | A példában megjelenített címkék |
|---|---|
1 |
Kategória 1, Kategória 2, Kategória 3, … Kategória 24 |
2 |
Kategória 1, Kategória 3, Kategória 5, … Kategória 23 |
3 |
Kategória 1, Kategória 4, Kategória 7, … Kategória 22 |
Egy 3 intervallum minden harmadik címkét jelenít meg, a megjelenített címkék között két címke marad rejtve. Nem távolítja el a megfelelő oszlopokat. Az automatikus távolság a rendelkezésre álló hely alapján választ intervallumot; nem feltétlenül jeleníti meg az összes címkét.
A jelölőjeleknek külön vezérlőik vannak. Hívja a setAutomaticTickMarksSpacing false értékkel, és használja a setTickMarksSpacing metódust az intervallum beállításához. Például az 1 minden kategóriaintervallumra helyez egy jelölőjelet, míg a címkék csak minden harmadik kategóriánál jelennek meg. Használja a setMajorTickMark metódust látható stílussal, hogy lássa az eredményt. Bármelyik automatikus beállítót true‑ra állítva a diagram újra kiválasztja az intervallumot.
A következő önálló példa 24 kategóriát és egy sorozatot hoz létre, majd három diát ment a CategoryAxisIntervals.pptx fájlba: automatikus távolság, manuális címkeintervallum független jelölőjelekkel, és a visszaállított automatikus távolság. A két másolat megtartja az eredeti diagram adatait. Bemeneti prezentáció nem szükséges. A vízszintes címke szöveg megkönnyíti a sűrűség észlelését.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 30, 40, 660, 320);
chart.setLegend(false);
chart.getChartData().getCategories().clear();
chart.getChartData().getSeries().clear();
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
workbook.clear(0);
IChartSeries series = chart.getChartData().getSeries().add(ChartType.ClusteredColumn);
for (int i = 0; i < 24; i++) {
IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, "Category " + (i + 1));
chart.getChartData().getCategories().add(categoryCell);
IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, 10 + i % 6 * 5);
series.getDataPoints().addDataPointForBarSeries(valueCell);
}
IAxis axis = chart.getAxes().getHorizontalAxis();
axis.setCategoryAxisType(CategoryAxisType.Text);
axis.getTextFormat().getTextBlockFormat().setRotationAngle(0);
axis.getTextFormat().getPortionFormat().setFontHeight(12);
axis.setMajorTickMark(TickMarkType.Outside);
axis.setAutomaticTickLabelSpacing(true);
axis.setAutomaticTickMarksSpacing(true);
// Dia 2: mutassa minden harmadik címkét, de minden kategóriához tartson meg egy jelölőjelet.
ISlide manualSlide = presentation.getSlides().addClone(slide);
IChart manualChart = (IChart)manualSlide.getShapes().get_Item(0);
IAxis manualAxis = manualChart.getAxes().getHorizontalAxis();
manualAxis.setAutomaticTickLabelSpacing(false);
manualAxis.setTickLabelSpacing(3);
manualAxis.setAutomaticTickMarksSpacing(false);
manualAxis.setTickMarksSpacing(1);
// Dia 3: hagyja, hogy a diagram újra kiválassza mindkét intervallumot.
ISlide restoredSlide = presentation.getSlides().addClone(manualSlide);
IChart restoredChart = (IChart)restoredSlide.getShapes().get_Item(0);
restoredChart.getAxes().getHorizontalAxis().setAutomaticTickLabelSpacing(true);
restoredChart.getAxes().getHorizontalAxis().setAutomaticTickMarksSpacing(true);
presentation.save("CategoryAxisIntervals.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Automatikus távolság (1. dia): Ebben a megjelenítésben minden második kategória címke látható, és két sorba törik. Az automatikus eredmény a diagram méretétől, betűtípustól és a renderertől függően változhat.

Kézi távolság (2. dia): Minden harmadik címke jelenik meg egy sorban, míg a jelölőjelek minden kategóriaintervallumnál maradnak. Az összes 24 oszlop, beleértve a címkével nem rendelkezőket is, látható ugyanazokkal az értékekkel. A 3. dia visszaállítja a fent látható automatikus megjelenést.

A megfelelő tengely és intervallum kiválasztása
Használja ezt a kategória‑szám intervallumot szöveges kategória tengelyhez, például oszlop-, vonal-, terület- vagy sávdiagram kategória tengelyéhez. Oszlopdiagram esetén ez a vízszintes tengely. Vízszintes sávdiagram esetén a kategória tengely függőleges, ezért alkalmazza ezeket a beállításokat a getVerticalAxis metódus által visszaadott tengelyre. A jelölőjel távolság egy sorozat tengelyre is vonatkozik olyan diagramoknál, amelyek rendelkeznek ilyen tengellyel.
Ne használja a kategória címke távolságot az értéktengely numerikus skálájának beállítására. Egy értéktengelyen a setMajorUnit a értékek közti különbséget adja meg: például a 10 fő egység 0, 10, 20 stb. jelölőket hoz létre, ha a tengely nulláról indul. A 3 kategória címke intervallum ezzel szemben a kategóriahelyeket számolja, függetlenül azok adatértékétől. Szórt és buborék diagramok értéktengelyt használnak, nem szöveges kategória tengelyt. Dátumtengely esetén használjon időalapú fő egységeket és skálákat a Change a Category Axis szakaszban leírtak szerint.
Dátumformátum beállítása a kategória tengely értékeihez
A példa az alapértelmezett diagram adatokat négy éves értékkel helyettesíti. A dátumok OLE Automation sorozatszámokként vannak tárolva az első munkalapon (index 0), a 1899. december 30. óta eltelt napok számaként. Használja a setCategoryAxisType metódust CategoryAxisType.Date értékkel, hívja a setNumberFormatLinkedToSource metódust false‑ra, és adja meg a yyyy formátumot a setNumberFormat metódussal, hogy a kategória címkék a négy számjegyű évet jelenítsék meg a cellaformázástól függetlenül.
import com.aspose.slides.*;
import java.time.LocalDate;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Line, 50, 50, 450, 300);
chart.getChartData().getCategories().clear();
chart.getChartData().getSeries().clear();
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
workbook.clear(0);
LocalDate baseDate = LocalDate.of(1899, 12, 30);
IChartSeries series = chart.getChartData().getSeries().add(ChartType.Line);
for (int i = 0; i < 4; i++) {
LocalDate date = LocalDate.of(2015 + i, 1, 1);
IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, date.toEpochDay() - baseDate.toEpochDay());
chart.getChartData().getCategories().add(categoryCell);
IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, i + 1);
series.getDataPoints().addDataPointForLineSeries(valueCell);
}
chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date);
chart.getAxes().getHorizontalAxis().setNumberFormatLinkedToSource(false);
chart.getAxes().getHorizontalAxis().setNumberFormat("yyyy");
presentation.save("DateAxisFormat.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Forgatási szög beállítása a diagram tengely címéhez
Hívja a setTitle metódust true‑ra a függőleges tengelyen, adja meg a cím szövegét, és használja a setRotationAngle metódust a cím forgatásához. A szög fokokban van megadva; ez a példa egy oszlopdiagramot ment el, amelynek értéktengely‑címe 90 fokkal van elfordítva.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.getAxes().getVerticalAxis().setTitle(true);
chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("Value");
chart.getAxes().getVerticalAxis().getTitle().getTextFormat().getTextBlockFormat().setRotationAngle(90);
presentation.save("RotatedAxisTitle.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Tengelypozíció beállítása kategória vagy érték tengelyen
Használja a setAxisBetweenCategories metódust, hogy szabályozza, az értéktengely a kategória tengely között vagy a kategória jelölőpontoknál metssze át. Ez a beállítás a kategória tengelyekre vonatkozik. A példa a vízszintes kategória tengelyen true‑ra állítja, és elmenti az eredményt.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.getAxes().getHorizontalAxis().setAxisBetweenCategories(true);
presentation.save("AxisBetweenCategories.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Megjelenítési egység beállítása a diagram érték tengelyen
Használja a setDisplayUnit metódust, hogy a címkék méretét az értéktengelyen anélkül módosítsa, hogy az adatokat megváltoztatná. A DisplayUnitType Millions értékre állítása esetén a 60 000 000 érték 60‑ként jelenik meg. A példa egy oszlopdiagramot hoz létre, és a függőleges tengelyen alkalmazza a milliók megjelenítési egységet.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Millions);
presentation.save("Result.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
GYIK
Hogyan állíthatom be azt az értéket, ahol egy tengely áthalad a másikon (tengelykeresztelő)?
Használja a setCrossType metódust a keresztelési viselkedés kiválasztásához. Numerikus keresztelési érték megadásához használja a setCrossAt metódust. Ezek a beállítások lehetővé teszik, hogy a tengely metszéspontját egy megfelelő alapvonalra helyezze.
Hogyan helyezhetem el a jelölőcímkéket a tengelyhez képest?
Hívja a setTickLabelPosition metódust a TickLabelPositionType valamelyik értékével: Low, High, NextTo vagy None. A jelölőjelek saját beállításához használja a setMajorTickMark vagy a setMinorTickMark metódust; ezek különállóak a címkék pozicionálásától.