Android पर प्रस्तुतियों में चार्ट अक्षों को अनुकूलित करें
परिचय
यह लेख Aspose.Slides for Android via Java का उपयोग करके चार्ट अक्षों को अनुकूलित करने के तरीके को समझाता है। यह गणना किए गए अक्ष मानों, चार्ट पंक्तियों और स्तंभों के स्विच, अक्ष दृश्यता, वर्ग लेबल और टिक‑मार्क अंतराल, तिथि श्रेणियां और स्वरूपण, शीर्षक घूर्णन, अक्ष स्थिति, और प्रदर्शन इकाइयों को कवर करता है।
चार्ट में लंबवत अक्ष पर अधिकतम मान प्राप्त करना
एक Presentation बनाएं और डिफ़ॉल्ट डेटा के साथ एक एरिया चार्ट जोड़ें। गणना किए गए अक्ष मानों को पढ़ने से पहले validateChartLayout को कॉल करें ताकि चार्ट लेआउट अद्यतित रहे।
अक्ष सीमाओं के लिए getActualMaxValue और getActualMinValue पढ़ें, और टिक अंतरालों के लिए getActualMajorUnit और getActualMinorUnit पढ़ें। getActualMajorUnitScale और getActualMinorUnitScale समय‑इकाई स्केल प्रदान करते हैं, जो तिथि अक्षों के लिए प्रासंगिक हैं। उदाहरण इन मानों को स्थानीय वेरिएबल्स में संग्रहीत करता है और चार्ट सहेजता है।
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();
}
अक्षों के बीच डेटा अदला‑बदली
swapRowColumn का उपयोग करके चार्ट डेटा में सीरीज़ और श्रेणियों की भूमिकाएं बदलें। प्रत्येक पूर्व श्रेणी अब एक सीरीज़ बन जाती है, और प्रत्येक पूर्व सीरीज़ अब एक श्रेणी बनती है। यह डेटा समूहित करने के तरीके को बदलता है; यह क्षैतिज और लंबवत अक्षों को नहीं बदलता। उदाहरण setRange का उपयोग करके डिफ़ॉल्ट डेटा को Sheet1!A1:D5 से बाइंड करता है, जिसमें हेडर पंक्ति और श्रेणी कॉलम शामिल हैं, पंक्तियों और स्तंभों को बदलने से पहले। यह चार्ट को चार सीरीज़ और तीन श्रेणियों के साथ सहेजता है।
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();
}
लाइन चार्ट के लिए लंबवत अक्ष को अक्षम करें
लंबवत अक्ष को छिपाने के लिए false के साथ setVisible को कॉल करें। उदाहरण डिफ़ॉल्ट डेटा के साथ एक लाइन चार्ट बनाता है और इसे लंबवत अक्ष छिपा कर सहेजता है।
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();
}
लाइन चार्ट के लिए क्षैतिज अक्ष को अक्षम करें
क्षैतिज अक्ष को छिपाने के लिए false के साथ setVisible को कॉल करें। उदाहरण डिफ़ॉल्ट डेटा के साथ एक लाइन चार्ट बनाता है और इसे क्षैतिज अक्ष छिपा कर सहेजता है।
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();
}
श्रेणी अक्ष बदलें
setCategoryAxisType का उपयोग करके तिथि या टेक्स्ट श्रेणी अक्ष चुनें। इस उदाहरण के लिए ExistingChart.pptx आवश्यक है, जिसमें पहली स्लाइड पर पहला आकार चार्ट है और श्रेणी कोशिकाओं में संख्यात्मक Excel तिथि मान होते हैं। यह क्षैतिज अक्ष को तिथि अक्ष में बदलता है। setAutomaticMajorUnit को false, setMajorUnit को 1, और setMajorUnitScale को TimeUnitType.Months सेट करने से प्रमुख टिक एक‑महीने के अंतराल पर रखे जाते हैं।
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();
}
श्रेणी अक्ष लेबल अंतराल नियंत्रित करें
जब चार्ट में कई श्रेणियां हों, तो श्रेणियों या डेटा पॉइंट को हटाए बिना दिखाए जाने वाले अक्ष लेबलों की संख्या घटाएँ। false के साथ setAutomaticTickLabelSpacing को कॉल करें, फिर वांछित श्रेणी अंतराल को setTickLabelSpacing में पास करें। सामान्य क्रम में टेक्स्ट श्रेणियों के लिए गिनती पहली श्रेणी से शुरू होती है:
| इंटरवल | उदाहरण में दिखाए गए लेबल |
|---|---|
1 |
श्रेणी 1, श्रेणी 2, श्रेणी 3, … श्रेणी 24 |
2 |
श्रेणी 1, श्रेणी 3, श्रेणी 5, … श्रेणी 23 |
3 |
श्रेणी 1, श्रेणी 4, श्रेणी 7, … श्रेणी 22 |
3 का अंतराल हर तीसरे लेबल को दिखाता है, जिससे दो लेबल छिपे रहते हैं। यह संबंधित कॉलम को नहीं हटाता। स्वचालित स्पेसिंग उपलब्ध स्थान के आधार पर अंतराल चुनता है; यह अनिवार्य रूप से हर लेबल नहीं दिखाता।
टिक‑मार्क के लिए अलग नियंत्रण होते हैं। false के साथ setAutomaticTickMarksSpacing को कॉल करें और उनके अंतराल को सेट करने के लिए setTickMarksSpacing का उपयोग करें। उदाहरण के लिए, 1 प्रत्येक श्रेणी अंतराल पर एक टिक‑मार्क रखता है जबकि लेबल केवल हर तीसरी श्रेणी पर दिखाई देते हैं। दृश्यमान शैली के साथ setMajorTickMark का उपयोग करें ताकि परिणाम देखा जा सके। किसी भी स्वचालित‑स्पेसिंग सेट्टर को फिर से true करने से चार्ट को वही अंतराल पुनः चुनने दिया जाता है।
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);
// Slide 2: हर तीसरा लेबल दिखाएँ, लेकिन प्रत्येक श्रेणी के लिए टिक-मार्क रखें।
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);
// Slide 3: चार्ट को दोनों अंतराल फिर से चुनने दें।
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();
}
स्वचालित स्पेसिंग (स्लाइड 1): इस रेंडरिंग में हर दूसरा श्रेणी लेबल दिखाया जाता है और दो पंक्तियों में लिपटा होता है। स्वचालित परिणाम चार्ट के आकार, फ़ॉन्ट और रेंडरर के अनुसार बदल सकता है।

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

सही अक्ष और अंतराल चुनें
टेक्स्ट श्रेणी अक्ष के लिए इस श्रेणी‑गणना अंतराल का उपयोग करें, जैसे कि कॉलम, लाइन, एरिया या बार चार्ट का श्रेणी अक्ष। कॉलम चार्ट में यह क्षैतिज अक्ष होता है। हॉरिज़ॉन्टल बार चार्ट में श्रेणी अक्ष लंबवत होता है, इसलिए इसे getVerticalAxis द्वारा लौटाए गए अक्ष पर लागू करें। टिक‑मार्क स्पेसिंग उन चार्टों में सीरीज़ अक्ष पर भी लागू होती है जिनमें वह मौजूद हो।
मूल्य अक्ष की संख्यात्मक स्केल सेट करने के लिए वर्ग लेबल स्पेसिंग का उपयोग न करें। मूल्य अक्ष पर, setMajorUnit मानों के अंतर को निर्दिष्ट करता है: उदाहरण के लिए, 10 का प्रमुख इकाई 0, 10, 20 आदि के टिक बनाता है जब अक्ष शून्य से शुरू होता है। 3 की श्रेणी लेबल अंतराल केवल श्रेणी स्थितियों को गिनती है, उनके डेटा मानों को नहीं। स्कैटर और बबल चार्ट मूल्य अक्षों का उपयोग करते हैं, न कि टेक्स्ट श्रेणी अक्ष का। तिथि अक्ष के लिए, श्रेणी अक्ष बदलें में वर्णित समय‑आधारित प्रमुख इकाइयों और स्केले का उपयोग करें।
श्रेणी अक्ष मानों के लिए तिथि स्वरूप सेट करें
उदाहरण डिफ़ॉल्ट चार्ट डेटा को चार वार्षिक मानों से बदलता है। तिथियां पहले कार्यपत्रक (सूचकांक 0) में OLE Automation सीरियल नंबर के रूप में संग्रहीत की जाती हैं, जो 30 दिसंबर 1899 से दिनों की संख्या के रूप में गणना होती हैं। दोनों कैलेंडर UTC का उपयोग करते हैं और तिथियों को सेट करने से पहले साफ़ किए जाते हैं ताकि डेलाइट सेविंग टाइम और वर्तमान समय मान को प्रभावित न करे। setCategoryAxisType को CategoryAxisType.Date के साथ उपयोग करें, setNumberFormatLinkedToSource को false सेट करें, और setNumberFormat को yyyy पास करें ताकि श्रेणी लेबल चार अंकों वाले वर्ष को सेल फ़ॉर्मेट से स्वतंत्र रूप से दिखाएँ।
import com.aspose.slides.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
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);
TimeZone timeZone = TimeZone.getTimeZone("UTC");
Calendar baseDate = new GregorianCalendar(timeZone);
baseDate.clear();
baseDate.set(1899, Calendar.DECEMBER, 30);
IChartSeries series = chart.getChartData().getSeries().add(ChartType.Line);
for (int i = 0; i < 4; i++) {
Calendar date = new GregorianCalendar(timeZone);
date.clear();
date.set(2015 + i, Calendar.JANUARY, 1);
double serialDate = (date.getTimeInMillis() - baseDate.getTimeInMillis()) / 86400000.0;
IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, serialDate);
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();
}
चार्ट अक्ष शीर्षक के लिए घूर्णन कोण सेट करें
लंबवत अक्ष पर true के साथ setTitle को कॉल करें, शीर्षक पाठ प्रदान करें, और setRotationAngle का उपयोग करके शीर्षक को घुमाएँ। कोण डिग्री में मापा जाता है; यह उदाहरण एक कॉलम चार्ट को मूल्य‑अक्ष शीर्षक को 90 डिग्री घुमाए हुए सहेजता है।
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();
}
श्रेणी या मान अक्ष पर अक्ष स्थिति सेट करें
setAxisBetweenCategories का उपयोग करके नियंत्रित करें कि मान अक्ष श्रेणी अक्ष के बीच या श्रेणी टिक‑मार्क पर कटता है। यह सेटिंग केवल श्रेणी अक्षों पर लागू होती है। उदाहरण इसे कॉलम चार्ट के क्षैतिज श्रेणी अक्ष पर true सेट करता है और परिणाम सहेजता है।
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();
}
चार्ट मान अक्ष पर प्रदर्शन इकाई सेट करें
setDisplayUnit का उपयोग करके मान अक्ष के लेबलों को स्केल किया जाता है बिना मूल डेटा बदले। जब DisplayUnitType को Millions सेट किया जाता है, तो 60 000 000 का मान 60 के रूप में दिखता है। उदाहरण एक कॉलम चार्ट बनाता है और उसके लंबवत अक्ष पर मिलियन डिस्प्ले यूनिट लागू करता है।
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();
}
अक्सर पूछे जाने वाले प्रश्न
मैं एक अक्ष को दूसरे के साथ जिस बिंदु पर पार करता है, उसका मान कैसे सेट करूँ (अक्ष पार)?
setCrossType का उपयोग करके पार करने के व्यवहार को चुनें। संख्यात्मक पार मान निर्दिष्ट करने के लिए, setCrossAt का उपयोग करें। ये सेटिंग्स आपको अक्ष पार को उपयुक्त बेसलाइन पर ले जाने की सुविधा देती हैं।
मैं टिक लेबल को अक्ष के सापेक्ष कैसे स्थिति दूँ?
setTickLabelPosition को TickLabelPositionType के साथ उपयोग करें: Low, High, NextTo या None। टिक‑मार्क स्वयं को नियंत्रित करने के लिए, setMajorTickMark या setMinorTickMark का उपयोग करें; ये लेबल स्थिति से अलग होते हैं।