जावास्क्रिप्ट का उपयोग करके प्रस्तुतियों में चार्ट अक्षों को अनुकूलित करें

सारांश

यह लेख बताता है कि Aspose.Slides for Node.js को Java के माध्यम से उपयोग करके चार्ट अक्षों को कैसे अनुकूलित किया जाए। इसमें गणना किए गए अक्ष मान, चार्ट पंक्तियों और स्तंभों को बदलना, अक्ष की दृश्यता, श्रेणी लेबल और टिक‑मार्क अंतराल, तिथि श्रेणियाँ और स्वरूपण, शीर्षक घुमाव, अक्ष की स्थिति, और प्रदर्शन इकाइयाँ शामिल हैं।

चार्ट में लंबवत अक्ष पर अधिकतम मान प्राप्त करें

एक Presentation बनाएं और डिफ़ॉल्ट डेटा के साथ एक एरिया चार्ट जोड़ें। गणना किए गए अक्ष मान पढ़ने से पहले validateChartLayout को कॉल करें ताकि चार्ट लेआउट अद्यतित रहे।

getActualMaxValue और getActualMinValue को अक्ष सीमाओं के लिए पढ़ें, और getActualMajorUnit तथा getActualMinorUnit को टिक अंतराल के लिए। getActualMajorUnitScale और getActualMinorUnitScale समय‑इकाई स्केल प्रदान करते हैं, जो तिथि अक्षों के लिए प्रासंगिक हैं। उदाहरण इन मानों को स्थानीय चर में संग्रहीत करता है और चार्ट को सहेजता है।

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();
}

अक्षों के बीच डेटा बदलें

switchRowColumn का उपयोग करके चार्ट डेटा में श्रृंखला और श्रेणियों की भूमिकाओं को बदलें। प्रत्येक पूर्व श्रेणी एक श्रृंखला बनती है, और प्रत्येक पूर्व श्रृंखला एक श्रेणी बनती है। यह डेटा के समूहबद्ध करने के तरीके को बदलता है; यह क्षैतिज और लंबवत अक्षों को बदलता नहीं है। उदाहरण setRange का उपयोग करके डिफ़ॉल्ट डेटा को Sheet1!A1:D5 से जोड़ता है, जिसमें हेडर पंक्ति और श्रेणी स्तंभ शामिल हैं, पंक्तियों और स्तंभों को बदलने से पहले। यह चार श्रृंखला और तीन श्रेणियों वाला चार्ट सहेजता है।

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();
}

लाइन चार्ट के लिए लंबवत अक्ष को निष्क्रिय करें

लंबवत अक्ष पर false के साथ setVisible को कॉल करके इसे छिपाएँ। उदाहरण डिफ़ॉल्ट डेटा के साथ एक लाइन चार्ट बनाता है और इसे लंबवत अक्ष छिपा कर सहेजता है।

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();
}

लाइन चार्ट के लिए क्षैतिज अक्ष को निष्क्रिय करें

क्षैतिज अक्ष पर false के साथ setVisible को कॉल करके इसे छिपाएँ। उदाहरण डिफ़ॉल्ट डेटा के साथ एक लाइन चार्ट बनाता है और इसे क्षैतिज अक्ष छिपा कर सहेजता है।

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();
}

श्रेणी अक्ष बदलें

setCategoryAxisType का उपयोग करके तिथि या पाठ श्रेणी अक्ष चुनें। इस उदाहरण को ExistingChart.pptx की आवश्यकता है, जिसमें पहली स्लाइड पर पहली आकृति के रूप में एक चार्ट है और श्रेणी कोशिकाओं में संख्यात्मक Excel तिथि मान हैं। यह क्षैतिज अक्ष को तिथि अक्ष में बदलता है। setAutomaticMajorUnit को false, setMajorUnit को 1, और setMajorUnitScale को TimeUnitType.Months के साथ कॉल करने पर प्रमुख टिक एक‑महीने के अंतराल पर रखे जाते हैं।

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();
}

श्रेणी अक्ष लेबल अंतराल को नियंत्रित करें

जब किसी चार्ट में कई श्रेणियाँ हों, तो श्रेणियों या डेटा बिंदुओं को हटाए बिना दृश्यमान अक्ष लेबलों की संख्या घटाएँ। setAutomaticTickLabelSpacing को false के साथ कॉल करें, फिर वांछित श्रेणी अंतराल को setTickLabelSpacing में पास करें। सामान्य क्रम में पाठ श्रेणियों के लिए, गिनती पहली श्रेणी से शुरू होती है:

अंतराल उदाहरण में प्रदर्शित लेबल
1 श्रेणी 1, श्रेणी 2, श्रेणी 3, … श्रेणी 24
2 श्रेणी 1, श्रेणी 3, श्रेणी 5, … श्रेणी 23
3 श्रेणी 1, श्रेणी 4, श्रेणी 7, … श्रेणी 22

3 का अंतराल हर तीसरा लेबल प्रदर्शित करता है, प्रदर्शित लेबलों के बीच दो लेबल छिपे रहते हैं। यह संबंधित स्तंभों को नहीं हटाता। स्वचालित अंतराल उपलब्ध स्थान के आधार पर चुना जाता है; यह आवश्यक नहीं कि प्रत्येक लेबल दिखाया जाए।

टिक‑मार्क के लिए अलग नियंत्रण होते हैं। setAutomaticTickMarksSpacing को false के साथ कॉल करें और उनके अंतराल को सेट करने के लिए setTickMarksSpacing का उपयोग करें। उदाहरण के लिए, 1 प्रत्येक श्रेणी अंतराल पर एक टिक‑मार्क रखता है जबकि लेबल केवल प्रत्येक तीसरी श्रेणी पर दिखाई देते हैं। परिणाम को देखने के लिए एक दिखाई देने वाले शैली के साथ setMajorTickMark का उपयोग करें। फिर से true के साथ किसी भी स्वचालित‑अंतराल सेटर को कॉल करने से चार्ट को वह अंतराल फिर से चुनने की अनुमति मिलती है।

निम्न स्व-समाहित उदाहरण 24 श्रेणियाँ और एक श्रृंखला बनाता है, फिर CategoryAxisIntervals.pptx में तीन स्लाइड सहेजता है: स्वचालित अंतराल, स्वतंत्र टिक‑मार्क के साथ मैन्युअल लेबल अंतराल, और पुनर्स्थापित स्वचालित अंतराल। दोनों प्रति मूल चार्ट डेटा को बनाए रखते हैं। कोई इनपुट प्रस्तुति आवश्यक नहीं है। क्षैतिज लेबल पाठ घनत्व में अंतर को आसानी से देखने योग्य बनाता है।

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);

    // स्लाइड 2: हर तीसरा लेबल दिखाएँ, लेकिन प्रत्येक श्रेणी के लिए एक टिक‑मार्क रखें।
    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);

    // स्लाइड 3: चार्ट को फिर से दोनों अंतराल चुनने दें।
    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();
}

स्वचालित अंतराल (स्लाइड 1): इस प्रस्तुति में, प्रत्येक दूसरी श्रेणी लेबल दिखाया जाता है और दो पंक्तियों में रैप हो जाता है। स्वचालित परिणाम चार्ट आकार, फ़ॉन्ट और रेंडरर के अनुसार बदल सकता है।

स्वचालित श्रेणी लेबल अंतराल सभी 24 कॉलम दृश्यमान हैं

मैन्युअल अंतराल (स्लाइड 2): प्रत्येक तीसरा लेबल एक पंक्ति में दिखाया जाता है, जबकि टिक‑मार्क हर श्रेणी अंतराल पर बने रहते हैं। सभी 24 कॉलम, जिनमें बिना लेबल वाले भी शामिल हैं, समान मानों के साथ दृश्यमान रहते हैं। स्लाइड 3 ऊपर दिखाए गए स्वचालित स्वरूप को पुनर्स्थापित करता है।

तीन के मैन्युअल श्रेणी लेबल अंतराल सभी 24 कॉलम दृश्यमान

सही अक्ष और अंतराल चुनें

पाठ श्रेणी अक्ष, जैसे कि कॉलम, लाइन, एरिया या बार चार्ट के श्रेणी अक्ष के लिए इस श्रेणी‑गणना अंतराल का उपयोग करें। कॉलम चार्ट में यह क्षैतिज अक्ष होता है। क्षैतिज बार चार्ट में श्रेणी अक्ष लंबवत होता है, इसलिए इन सेटिंग्स को getVerticalAxis द्वारा लौटाए गए अक्ष पर लागू करें। टिक‑मार्क अंतराल उन चार्टों में श्रृंखला अक्ष पर भी लागू होता है जिनमें वह मौजूद होता है।

मान अक्ष के संख्यात्मक स्केल को सेट करने के लिए श्रेणी लेबल अंतराल का उपयोग न करें। मान अक्ष पर, setMajorUnit मानों में अंतर निर्दिष्ट करता है: उदाहरण के लिए, 10 का प्रमुख इकाई शून्य से शुरू होने पर 0, 10, 20 आदि पर टिक बनाता है। 3 का श्रेणी लेबल अंतराल केवल श्रेणी स्थितियों की गणना करता है, उनके डेटा मानों की परवाह किए बिना। स्कैटर और बबल चार्ट मान अक्षों का उपयोग करते हैं, न कि पाठ श्रेणी अक्ष का। तिथि अक्ष के लिए, श्रेणी अक्ष बदलें में वर्णित अनुसार समय‑आधारित प्रमुख इकाइयाँ और स्केल का उपयोग करें।

श्रेणी अक्ष मानों के लिए तिथि प्रारूप सेट करें

उदाहरण डिफ़ॉल्ट चार्ट डेटा को चार वार्षिक मानों से बदलता है। तिथियाँ पहली वर्कशीट (इंडेक्स 0) में OLE Automation क्रमिक संख्याओं के रूप में संग्रहीत होती हैं, जो 30 दिसंबर 1899 से दिनों की संख्या के रूप में गणना की गई हैं। JavaScript गणना UTC टाइमस्टैंप का उपयोग करती है और अंतर को 86,400,000 मिलिसेकंड प्रति दिन से विभाजित करती है। setCategoryAxisType को CategoryAxisType.Date के साथ उपयोग करें, setNumberFormatLinkedToSource को false के साथ कॉल करें, और setNumberFormat को yyyy पास करें ताकि श्रेणी लेबल सेल स्वरूपण से स्वतंत्र रूप से चार अंकों वाले वर्ष प्रदर्शित करें।

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();
}

चार्ट अक्ष शीर्षक के लिए घूर्णन कोण सेट करें

लंबवत अक्ष पर true के साथ setTitle को कॉल करें, शीर्षक पाठ प्रदान करें, और setRotationAngle का उपयोग करके शीर्षक को घुमाएँ। कोण डिग्री में मापा जाता है; यह उदाहरण मान‑अक्ष शीर्षक को 90 डिग्री घुमाकर कॉलम चार्ट को सहेजता है।

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();
}

श्रेणी या मान अक्ष पर अक्ष स्थिति सेट करें

setAxisBetweenCategories का उपयोग करके निर्धारित करें कि मान अक्ष श्रेणी अक्ष को श्रेणियों के बीच या श्रेणी टिक‑मार्क पर पार करता है। यह सेटिंग श्रेणी अक्षों पर लागू होती है। उदाहरण इसे कॉलम चार्ट के क्षैतिज श्रेणी अक्ष पर true सेट करता है और परिणाम सहेजता है।

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();
}

चार्ट मान अक्ष पर डिस्प्ले यूनिट सेट करें

setDisplayUnit का उपयोग करके मान अक्ष पर लेबल को स्केल करें बिना अंतर्निहित डेटा बदले। DisplayUnitType को Millions पर सेट करने पर 60,000,000 का मान 60 के रूप में प्रदर्शित होता है। उदाहरण एक कॉलम चार्ट बनाता है और उसके लंबवत अक्ष पर मिलियन डिस्प्ले यूनिट लागू करता है।

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();
}

अक्सर पूछे जाने वाले प्रश्न

मैं किसी अक्ष को दूसरे के ऊपर किस मान पर कटता है (अक्ष क्रॉसिंग) को कैसे सेट करूँ?

setCrossType का उपयोग करके क्रॉसिंग व्यवहार चुनें। संख्यात्मक क्रॉसिंग मान निर्दिष्ट करने के लिए setCrossAt का उपयोग करें। ये सेटिंग्स आपको अक्ष क्रॉसिंग को उपयुक्त बेसलाइन पर ले जाने देती हैं।

मैं टिक लेबल को अक्ष के सापेक्ष कैसे स्थित कर सकता हूँ?

setTickLabelPosition को TickLabelPositionType के साथ उपयोग करके कॉल करें: Low, High, NextTo या None। टिक‑मार्क स्वयं को नियंत्रित करने के लिए, setMajorTickMark या setMinorTickMark का उपयोग करें; ये लेबल पोजीशन से अलग हैं।