Diagramtengelyek testreszabása prezentációkban JavaScript segítségével

Áttekintés

Ez a cikk bemutatja, hogyan testreszabhatók a diagram tengelyei az Aspose.Slides for Node.js via Java segítségével. Kitér a számított tengelyértékekre, a diagram sorok és oszlopok felcserélésére, a tengelyek láthatóságára, a kategória címke- és jelölő‑intervallumokra, a dátumkategóriákra és formázásukra, a cím forgatására, a tengely elhelyezésére és a megjelenítési egységekre.

A maximális értékek lekérése a függőleges tengelyen diagramoknál

Hozzon létre egy Presentation objektumot, és adjon hozzá egy területdiagramot alapértelmezett adatokkal. Hívja meg a validateChartLayout metódust a számított tengelyértékek lekérése előtt, hogy a diagram elrendezése naprakész legyen.

Olvassa el a getActualMaxValue és a getActualMinValue értékeket a tengelyhatárokhoz, valamint a getActualMajorUnit és a getActualMinorUnit értékeket a jelölő‑intervallumokhoz. A getActualMajorUnitScale és a getActualMinorUnitScale időegység‑skálákat ad vissza, amelyek a dátumtengelyek esetén relevánsak. A példa ezeket az értékeket helyi változókba menti, majd a diagramot elmenti.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.Area, 100, 100, 500, 350);
    chart.validateChartLayout();

    var maxValue = chart.getAxes().getVerticalAxis().getActualMaxValue();
    var minValue = chart.getAxes().getVerticalAxis().getActualMinValue();

    var majorUnit = chart.getAxes().getVerticalAxis().getActualMajorUnit();
    var minorUnit = chart.getAxes().getVerticalAxis().getActualMinorUnit();

    var majorUnitScale = chart.getAxes().getVerticalAxis().getActualMajorUnitScale();
    var minorUnitScale = chart.getAxes().getVerticalAxis().getActualMinorUnitScale();

    presentation.save("AxisValues_out.pptx", aspose.slides.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éhez a diagram adataiban. Minden korábbi kategória sorozattá, minden korábbi sorozat pedig kategóriává válik. Ez az adatcsoportosítást módosítja; nem cseréli fel a vízszintes és függőleges tengelyeket. A példa a setRange metódussal köti az alapértelmezett adatokat a Sheet1!A1:D5 tartományra, beleértve a fejlécsort és a kategóriakolumnát, a sorok és oszlopok felcserélése előtt. Egy négy sorozatú és három kategóriás diagramot ment el.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 100, 100, 400, 300);
    chart.getChartData().setRange("Sheet1!A1:D5");
    chart.getChartData().switchRowColumn();

    presentation.save("SwitchChartRowColumns_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Függőleges tengely letiltása vonaldiagramok esetén

Hívja meg a setVisible metódust false értékkel a függőleges tengelyen, hogy elrejtse azt. A példa egy alapértelmezett adatokkal rendelkező vonaldiagramot hoz létre, és a függőleges tengely letiltásával menti el.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.Line, 100, 100, 400, 300);
    chart.getAxes().getVerticalAxis().setVisible(false);

    presentation.save("HiddenVerticalAxis.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Vízszintes tengely letiltása vonaldiagramok esetén

Hívja meg a setVisible metódust false értékkel a vízszintes tengelyen, hogy elrejtse azt. A példa egy alapértelmezett adatokkal rendelkező vonaldiagramot hoz létre, és a vízszintes tengely letiltásával menti el.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.Line, 100, 100, 400, 300);
    chart.getAxes().getHorizontalAxis().setVisible(false);

    presentation.save("HiddenHorizontalAxis.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Kategóriatengely módosítása

Használja a setCategoryAxisType metódust, hogy dátum- vagy szöveges kategóriatengelyt válasszon. Ez a példa az ExistingChart.pptx fájlt igényli, amelyben a diagram az első dia első alakja, a kategóriacellák pedig numerikus Excel dátumértékeket tartalmaznak. A vízszintes tengelyt dátumtengelyre változtatja. A setAutomaticMajorUnit false, a setMajorUnit 1, valamint a setMajorUnitScale TimeUnitType.Months beállításával a fő jelölők egyhónapos intervallumokra kerülnek.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation("ExistingChart.pptx");
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().get_Item(0);
    chart.getAxes().getHorizontalAxis().setCategoryAxisType(aspose.slides.CategoryAxisType.Date);
    chart.getAxes().getHorizontalAxis().setAutomaticMajorUnit(false);
    chart.getAxes().getHorizontalAxis().setMajorUnit(1);
    chart.getAxes().getHorizontalAxis().setMajorUnitScale(aspose.slides.TimeUnitType.Months);

    presentation.save("ChangeChartCategoryAxis_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Kategóriatengely címkeintervallumok vezérlése

Amikor egy diagram sok kategóriát tartalmaz, csökkentheti a látható tengelycímkék számát anélkül, hogy a kategóriákat vagy adatpontokat eltávolítaná. Hívja meg a setAutomaticTickLabelSpacing metódust false értékkel, majd adja meg a kívánt kategória‑intervallumot a setTickLabelSpacing metódussal. Szöveges kategóriák esetén a normál sorrendben a számlálás az első kategóriától kezdődik:

Intervallum 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

A 3‑as intervallum minden harmadik címkét jeleníti meg, a megjelenő címkék között két címke rejtve marad. Ez 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 jelenik meg minden címke.

A jelölő‑vonalaknak külön vezérlése van. Hívja meg a setAutomaticTickMarksSpacing false értékkel, és használja a setTickMarksSpacing metódust az intervallum beállításához. Például a 1 minden kategória‑intervallumnál megtart egy jelölő‑vonalat, míg a címkék csak minden harmadik kategóriánál jelennek meg. Használja a setMajorTickMark metódust látható stílusú jelölővel, hogy lássa az eredményt. Bármelyik automatikus beállítót true‑ra állítva a diagram újra kiválasztja azt az intervallumot.

Az alábbi önálló példa 24 kategóriát és egy sorozatot hoz létre, majd három diát ment el a CategoryAxisIntervals.pptx fájlban: automatikus távolság, kézi címke‑távolság független jelölőkkel, és visszaállított automatikus távolság. A két másolat az eredeti diagramadatokat tartalmazza. Bemutató prezentáció nem szükséges. A vízszintes címkeszöveg könnyen láthatóvá teszi a sűrültségkülönbséget.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 30, 40, 660, 320);

    chart.setLegend(false);
    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    var workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    var series = chart.getChartData().getSeries().add(aspose.slides.ChartType.ClusteredColumn);
    for (var i = 0; i < 24; i++) {
        var categoryCell = workbook.getCell(0, i + 1, 0, "Category " + (i + 1));
        chart.getChartData().getCategories().add(categoryCell);
        var valueCell = workbook.getCell(0, i + 1, 1, 10 + i % 6 * 5);
        series.getDataPoints().addDataPointForBarSeries(valueCell);
    }

    var axis = chart.getAxes().getHorizontalAxis();
    axis.setCategoryAxisType(aspose.slides.CategoryAxisType.Text);
    axis.getTextFormat().getTextBlockFormat().setRotationAngle(0);
    axis.getTextFormat().getPortionFormat().setFontHeight(12);
    axis.setMajorTickMark(aspose.slides.TickMarkType.Outside);
    axis.setAutomaticTickLabelSpacing(true);
    axis.setAutomaticTickMarksSpacing(true);

    // Dia 2: mutasson minden harmadik címkét, de minden kategóriához tartson egy jelölővonalat.
    var manualSlide = presentation.getSlides().addClone(slide);
    var manualChart = manualSlide.getShapes().get_Item(0);
    var 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.
    var restoredSlide = presentation.getSlides().addClone(manualSlide);
    var restoredChart = restoredSlide.getShapes().get_Item(0);
    restoredChart.getAxes().getHorizontalAxis().setAutomaticTickLabelSpacing(true);
    restoredChart.getAxes().getHorizontalAxis().setAutomaticTickMarksSpacing(true);

    presentation.save("CategoryAxisIntervals.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Automatikus távolság (1. dia): Ebben a megjelenítésben minden második kategóriacímke látható, és két sorra törik. Az automatikus eredmény a diagram méretétől, betűtípusától és a renderertől függően változhat.

Automatikus kategória címke távolság, az összes 24 oszlop látható

Kézi távolság (2. dia): Minden harmadik címke egy sorban jelenik meg, míg a jelölő‑vonalak minden kategória‑intervallumnál megmaradnak. Az összes 24 oszlop, beleértve a címke nélküli oszlopokat is, látható ugyanazzal az értékkel. A 3. dia visszaállítja a fenti automatikus megjelenést.

Kézi kategória címke intervallum három, az összes 24 oszlop látható

A megfelelő tengely és intervallum kiválasztása

Használja ezt a kategória‑szám intervallumot szöveges kategóriatengely esetén, például egy oszlop-, vonal-, terület- vagy sávdiagram kategóriatengelyén. Oszlopdiagram esetén ez a vízszintes tengely. Vízszintes sávdiagram esetén a kategóriatengely függőleges, ezért ezeket a beállításokat a getVerticalAxis által visszaadott tengelyre alkalmazza. A jelölő‑távolság sorozattengelyre is vonatkozik azon diagramoknál, amelyek rendelkeznek ilyen tengellyel.

Ne használja a kategóriacímke‑távolságot a numerikus értéktengely skálájának beállításához. Egy értéktengelyen a setMajorUnit értéke a különbséget jelöli: például a 10 fő egység 0, 10, 20 stb. értékeknél jelölőket hoz létre, ha a tengely nullánál kezdődik. A 3‑as kategória címke intervallum a kategória pozíciókat számolja, függetlenül a tényleges adatértékektől. Szórt‑ és buborékdiagramok értéktengelyeket használnak, nem szöveges kategóriatengelyt. Dátumtengely esetén használjon időalapú fő egységeket és skálákat a Kategóriatengely módosítása szakaszban leírtak szerint.

Dátumformátum beállítása a kategóriatengely értékeire

A példa négy éves értékkel helyettesíti az alapértelmezett diagramadatokat. A dátumok OLE Automation sorozatszámként vannak tárolva az első munkalapon (index 0), ami 1899. december 30. óta eltelt napok számát jelenti. A JavaScript számítás UTC időbélyegeket használ, és a különbséget 86 400 000 miliszekundummal osztja el napra. Használja a setCategoryAxisType metódust CategoryAxisType.Date értékkel, hívja meg a setNumberFormatLinkedToSource metódust false‑val, és adja át a yyyy‑t a setNumberFormat metódusnak, hogy a kategóriacímkék négy számjegyű évként jelenjenek meg a cellaformázástól függetlenül.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.Line, 50, 50, 450, 300);

    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    var workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    var baseDate = Date.UTC(1899, 11, 30);

    var series = chart.getChartData().getSeries().add(aspose.slides.ChartType.Line);
    for (var i = 0; i < 4; i++) {
        var date = Date.UTC(2015 + i, 0, 1);
        var categoryCell = workbook.getCell(0, i + 1, 0, (date - baseDate) / 86400000);
        chart.getChartData().getCategories().add(categoryCell);

        var valueCell = workbook.getCell(0, i + 1, 1, i + 1);
        series.getDataPoints().addDataPointForLineSeries(valueCell);
    }

    chart.getAxes().getHorizontalAxis().setCategoryAxisType(aspose.slides.CategoryAxisType.Date);
    chart.getAxes().getHorizontalAxis().setNumberFormatLinkedToSource(false);
    chart.getAxes().getHorizontalAxis().setNumberFormat("yyyy");

    presentation.save("DateAxisFormat.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Forgásszög beállítása diagramtengely címéhez

Hívja meg a setTitle metódust true értékkel a függőleges tengelyen, adja meg a címszöveget, és használja a setRotationAngle metódust a cím forgatásához. A szög fokban van megadva; ez a példa egy oszlopdiagramot ment el, amelynek az értéktengely címe 90 fokkal van elforgatva.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.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", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

A tengely pozíciójának beállítása kategória vagy értéktengelyen

Használja a setAxisBetweenCategories metódust annak meghatározására, hogy az értéktengely a kategóriatengely között vagy a kategória‑jelölőknél metszi-e. Ez a beállítás csak kategóriatengelyekre vonatkozik. A példa a true értéket állítja be a column diagram vízszintes kategóriatengelyén, és elmenti az eredményt.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 450, 300);
    chart.getAxes().getHorizontalAxis().setAxisBetweenCategories(true);

    presentation.save("AxisBetweenCategories.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Megjelenítési egység beállítása diagram értéktengelyen

Használja a setDisplayUnit metódust a értéktengely felirataiban lévő skálázásra az adatok módosítása nélkül. A DisplayUnitType Millions beállításával a 60 000 000 érték 60‑ként jelenik meg. A példa egy oszlopdiagramot hoz létre, és a függőleges tengelyre a milliók megjelenítési egységét alkalmazza.

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    var slide = presentation.getSlides().get_Item(0);

    var chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 450, 300);
    chart.getAxes().getVerticalAxis().setDisplayUnit(aspose.slides.DisplayUnitType.Millions);

    presentation.save("Result.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

GYIK

Hogyan állíthatom be azt az értéket, ahol egy tengely kereszteződik a másikkal (tengelykereszt)?

Használja a setCrossType metódust a keresztezési viselkedés kiválasztásához. Numerikus keresztérték megadásához használja a setCrossAt metódust. Ezek a beállítások lehetővé teszik, hogy a tengelykeresztet egy megfelelő alapvonalra helyezze.

Hogyan helyezhetem el a jelölőcímkéket a tengelyhez képest?

Hívja meg a setTickLabelPosition metódust a TickLabelPositionType egyik értékével: Low, High, NextTo vagy None. A jelölővonalak vezérléséhez használja a setMajorTickMark vagy a setMinorTickMark metódusokat; ezek külön állnak a címkepozícionálástól.