चार्ट्स के साथ काम करना
चार्ट्स के साथ काम करना
Aspose.Words FOSS for .NET मूल Word चार्ट्स को सम्मिलित कर सकता है — वही DrawingML चार्ट्स जो Word स्वयं बनाता है — ड्राइंग लेयर में एक आकार (shape) के रूप में। DocumentBuilder.InsertChart आकार बनाता है और उसे लौटाता है; आकार की Chart प्रॉपर्टी श्रृंखला, अक्ष, लेजेंड और फ़ॉर्मेटिंग को उजागर करती है। यह गाइड चार्ट बनाने, चार्ट प्रकार चुनने, श्रृंखला और डेटा पॉइंट्स के साथ काम करने, अक्ष और ग्रिडलाइन, और चार्ट तत्वों के फ़ॉर्मेटिंग को कवर करता है।
एक चार्ट बनाना
कर्सर पर एक चार्ट आकार (shape) सम्मिलित करने के लिए DocumentBuilder.InsertChart(chartType, width, height) को कॉल करें और वापस मिलने वाला Shape प्राप्त करें। उसकी Chart प्रॉपर्टी वह Chart ऑब्जेक्ट है जिसे आप कॉन्फ़िगर करते हैं। एक नई सम्मिलित चार्ट में प्लेसहोल्डर डेमो सीरीज़ होती है, इसलिए वास्तविक डेटा ChartSeriesCollection.Add(seriesName, categories, values) के साथ जोड़ने से पहले Chart.Series को साफ़ करें:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");यह उदाहरण एक Document बनाता है, DocumentBuilder.InsertChart(ChartType.Line, 432, 252) का उपयोग करके एक लाइन चार्ट आकार सम्मिलित करता है, shape.Chart को पढ़कर Chart ऑब्जेक्ट प्राप्त करता है, प्लेसहोल्डर सीरीज़ को हटाने के लिए chart.Series.Clear() को कॉल करता है, chart.Series.Add(seriesName, categories, values) के साथ एक वास्तविक सीरीज़ जोड़ता है, और परिणाम को Document.Save के साथ लिखता है।
चार्ट प्रकार
ChartType मानक Word चार्ट परिवारों को कवर करता है — Line, Bar, Column (उनके Stacked, PercentStacked, और 3D वेरिएंट्स सहित), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, और नए Word 2016 चार्ट प्रकार Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, और Waterfall. इच्छित मान को chartType तर्क के रूप में InsertChart को पास करें; सम्मिलन के बाद मौजूदा चार्ट के प्रकार को बदलने का कोई तरीका नहीं है सिवाय आकार को बदलने के।
श्रृंखलाएँ और डेटा बिंदु
Chart.Series एक ChartSeriesCollection है ChartSeries वस्तुओं का। ऊपर उपयोग किए गए Add(seriesName, categories, values) ओवरलोड के अलावा, ChartSeriesCollection में X/Y मान जोड़ों, तिथियों, और बबल आकारों के लिए भी ओवरलोड हैं, साथ ही Insert, Remove(index), और Clear()। प्रत्येक ChartSeries DataPoints (एक ChartDataPointCollection) को प्रति-बिंदु फ़ॉर्मेटिंग के लिए उजागर करता है — Format, Marker, Explosion, और InvertIfNegative — और HasDataLabels / DataLabels को चालू करने और ChartDataLabelCollection को कॉन्फ़िगर करने के लिए (ShowValue, ShowCategoryName, ShowPercentage, Position)।
अक्ष और ग्रिडलाइन
Chart.AxisX, AxisY, और AxisZ ChartAxis वस्तुएँ हैं (जहाँ Chart.Axes ChartAxisCollection के रूप में सभी को इटरेट करने के लिए है)। प्रत्येक अक्ष में HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (मिलते-जुलते *IsAuto फ़्लैग्स के साथ), Crosses / CrossesAt, CategoryType, और एक TickLabels वस्तु (AxisTickLabels) है लेबल फ़ॉन्ट और अभिविन्यास के लिए। ChartAxis.Title (ChartAxisTitle) अक्ष शीर्षक पाठ को उसके Text और Show गुणों के माध्यम से सेट करता है।
लीजेंड, शीर्षक, और डेटा तालिका
Chart.Title (ChartTitle) चार्ट का कुल शीर्षक सेट करता है — Text, Show, और Font। Chart.Legend (ChartLegend) यह नियंत्रित करता है कि लीजेंड कहाँ और कब दिखेगा Position के माध्यम से (एक LegendPosition मान जैसे Bottom, Right, या Top) और व्यक्तिगत LegendEntries उजागर करता है। Chart.DataTable (ChartDataTable) प्लॉट क्षेत्र के नीचे एक तालिका के रूप में अंतर्निहित श्रृंखला मानों को प्रदर्शित कर सकता है, जिसमें Show, HasLegendKeys, और बॉर्डर टॉगल शामिल हैं।
चार्ट तत्वों का स्वरूपण
अधिकांश चार्ट तत्व — श्रृंखलाएँ, डेटा बिंदु, अक्ष, शीर्षक, और लीजेंड — एक Format प्रॉपर्टी को उजागर करते हैं जिसका प्रकार ChartFormat है, जो बदले में उस तत्व के रंगों के लिए Fill और Stroke प्रदान करता है, साथ ही डेटा-बिंदु मार्कर आकारों के लिए एक ShapeType (ChartShapeType)। ChartFormat.SetDefaultFill() एक तत्व को उसके थीम-आधारित डिफ़ॉल्ट स्वरूप में रीसेट करता है।
सलाह और सर्वोत्तम प्रथाएँ
- वास्तविक डेटा जोड़ने से पहले हमेशा प्लेसहोल्डर सीरीज़ (
chart.Series.Clear()) को साफ़ करें या बदलें — एक नवीनतम सम्मिलित चार्ट में पहले से ही नमूना डेटा होता है। - अपने डेटा के आकार (श्रेणियाँ, X/Y जोड़े, तिथियाँ, या बबल आकार) के अनुरूप
ChartSeriesCollection.Addओवरलोड्स का उपयोग करें, बजाय इसके कि सब कुछ श्रेणी/मान जोड़ों के माध्यम से मजबूर किया जाए। - सीरीज़ पर
HasDataLabels = trueसेट करें इससे पहले कि आप उसकेDataLabelsसंग्रह को कॉन्फ़िगर करें — जब लेबल बंद हों, तो संग्रह की प्रदर्शन गुणों का कोई दृश्य प्रभाव नहीं होता। Chart.ChartSpaceपढ़ें या विशिष्टChartTypeजांचें इससे पहले कि आप ग्रिडलाइन या अक्ष व्यवहार पर भरोसा करें जो क्लासिक और Word-2016-शैली के चार्ट्स में भिन्न होते हैं।- जब आप किसी तत्व की उपस्थिति को रीसेट करना चाहते हैं, तो प्रत्येक फ़िल प्रॉपर्टी को मैन्युअली साफ़ करने के बजाय
ChartFormat.SetDefaultFill()को प्राथमिकता दें।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
| नया चार्ट अप्रत्याशित डेमो डेटा दिखाता है | InsertChart चार्ट को प्लेसहोल्डर सीरीज़ से सीड करता है | अपनी खुद की सीरीज़ जोड़ने से पहले chart.Series.Clear() को कॉल करें |
| डेटा लेबल नहीं दिख रहे हैं | HasDataLabels को DataLabels कॉन्फ़िगर करने से पहले सीरीज़ पर सेट नहीं किया गया था | series.HasDataLabels = true सेट करें, फिर series.DataLabels पर ShowValue/ShowCategoryName कॉन्फ़िगर करें |
| ग्रिडलाइन मान अक्ष पर नहीं दिखती | HasMajorGridlines/HasMinorGridlines उस अक्ष के लिए डिफ़ॉल्ट रूप से false होते हैं | सेट करें chart.AxisY.HasMajorGridlines = true (और HasMinorGridlines यदि आवश्यक हो) |
| लेजेंड नहीं दिखाई देता | Chart.Legend.Position को LegendPosition.None पर सेट किया गया है | Position को Bottom, Right, Top, Left, या TopRight पर सेट करें |
FAQ
मैं दस्तावेज़ में चार्ट कैसे सम्मिलित करूँ?
DocumentBuilder.InsertChart(chartType, width, height) को कॉल करें। यह कंटेनिंग Shape लौटाता है; चार्ट को कॉन्फ़िगर करने के लिए उसकी Chart प्रॉपर्टी पढ़ें।
मैं चार्ट में डेटा कैसे जोड़ूँ?
chart.Series.Clear() के साथ प्लेसहोल्डर सीरीज़ को साफ़ करें, फिर chart.Series.Add(seriesName, categories, values) को कॉल करें (या X/Y, तारीख, या बबल डेटा के लिए अन्य Add ओवरलोड्स में से कोई एक)।
कौन से चार्ट प्रकार उपलब्ध हैं?
ChartType में क्लासिक फ़ैमिलीज़ (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, साथ में उनके स्टैक्ड और 3D वैरिएंट) और Word 2016 चार्ट प्रकार (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall) शामिल हैं।
मैं लेजेंड कहाँ दिखता है, इसे कैसे बदलूँ?
Chart.Legend.Position को LegendPosition मान पर सेट करें, जैसे कि LegendPosition.Bottom या LegendPosition.Right।
क्या मैं किसी व्यक्तिगत डेटा पॉइंट को उसकी श्रृंखला के बाकी हिस्सों से अलग तरीके से स्वरूपित कर सकता हूँ?
हाँ — ChartSeries.DataPoints में इंडेक्स करें (एक ChartDataPointCollection) और उस ChartDataPoint के Format, Marker, या Explosion को श्रृंखला-स्तर के स्वरूपण से स्वतंत्र रूप से सेट करें।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
DocumentBuilder.InsertChart | कर्सर पर एक चार्ट शेप डालता है और उसे वापस करता है। |
Chart | चार्ट कॉन्फ़िगरेशन ऑब्जेक्ट, Shape.Chart के द्वारा पहुँचा जाता है। |
ChartType | उपलब्ध चार्ट प्रकारों का एनीम (लाइन, बार, पाई, और Word-2016 चार्ट प्रकार)। |
ChartSeriesCollection / ChartSeries | चार्ट की डेटा सीरीज़ और उन्हें जोड़ने, सम्मिलित करने या हटाने के मेथड्स। |
ChartDataPointCollection / ChartDataPoint | सीरीज़ के भीतर प्रति-बिंदु फ़ॉर्मैटिंग। |
ChartDataLabelCollection / ChartDataLabel | चार्ट बिंदुओं पर दिखाए गए मान/श्रेणी लेबल। |
ChartAxis / ChartAxisCollection | अक्ष कॉन्फ़िगरेशन — ग्रिडलाइन, इकाइयाँ, प्रतिच्छेद बिंदु, टिक लेबल। |
ChartLegend / LegendPosition | लीजेंड की दृश्यता और स्थान। |
ChartTitle | चार्ट का समग्र शीर्षक। |
ChartDataTable | प्लॉट क्षेत्र के नीचे दिखाए गए श्रृंखला मानों की वैकल्पिक तालिका। |
ChartFormat | भरण, स्ट्रोक और आकार स्वरूपण जो अधिकांश चार्ट तत्वों द्वारा साझा किया जाता है। |