चार्ट्स के साथ काम करना

चार्ट्स के साथ काम करना

अवलोकन

Aspose.Cells FOSS एक मेथड‑प्रति‑चार्ट‑टाइप API का उपयोग करता है। एक सामान्य
add(ChartType.X, ...) कॉल के बजाय, प्रत्येक चार्ट प्रकार का अपना समर्पित मेथड वर्कशीट के
charts संग्रह पर होता है:

विधिचार्ट प्रकार
ws.charts.add_bar(top_row, left_col, bottom_row, right_col)क्लस्टर्ड कॉलम (बार चार्ट)
ws.charts.add_line(top_row, left_col, bottom_row, right_col)लाइन
ws.charts.add_pie(top_row, left_col, bottom_row, right_col)पाई
ws.charts.add_area(top_row, left_col, bottom_row, right_col)एरिया

सभी चार स्थितिक पैरामीटर शीट में उस आयताकार क्षेत्र का वर्णन करते हैं जहाँ चार्ट एम्बेड किया जाएगा। पंक्ति और स्तंभ सूचकांक शून्य-आधारित होते हैं। प्रत्येक विधि एक Chart ऑब्जेक्ट लौटाती है जिसे आप सहेजने से पहले आगे कॉन्फ़िगर कर सकते हैं।

सीमा: केवल LINE, BAR, PIE, AREA, और STOCK चार्ट प्रकारों को XLSX में सहेजा जा सकता है। wb.save() को ऐसे वर्कबुक के साथ कॉल करने पर जिसमें कोई अन्य चार्ट प्रकार हो (जैसे, SCATTER, WATERFALL, RADAR, TREEMAP, HISTOGRAM) तो NotImplementedError उत्पन्न होगा।


एक कॉलम चार्ट जोड़ना

नीचे दिया गया उदाहरण एक छोटा राजस्व‑प्रति‑उत्पाद डेटासेट लिखता है और फिर डेटा के नीचे स्थित एक कॉलम चार्ट जोड़ता है।

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Data ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Revenue"

products = ["Widget A", "Widget B", "Widget C", "Widget D", "Widget E"]
revenues = [12_500, 18_200, 9_800, 21_400, 15_600]

for i, (product, revenue) in enumerate(zip(products, revenues), start=2):
    ws.cells[f"A{i}"].value = product
    ws.cells[f"B{i}"].value = revenue

##--- Chart (rows 7–22, columns A–H, all zero-based) ---
##top_row=6, left_col=0, bottom_row=22, right_col=7
chart = ws.charts.add_bar(6, 0, 22, 7)

chart.title = "Revenue by Product"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue (USD)")
chart.show_legend = True
chart.legend_position = "bottom"

workbook.save("column_chart.xlsx")
print("Saved column_chart.xlsx")

डेटा पंक्तियों 1–6 (शून्य‑आधारित पंक्तियों 0–5) में स्थित है, इसलिए top_row=6 चार्ट को डेटा के ऊपर ओवरलैप किए बिना तुरंत नीचे रखता है।


लाइन चार्ट जोड़ना

लाइन चार्ट समय के साथ रुझानों को दिखाने में अच्छी तरह काम करते हैं। कॉल सिग्नेचर add_bar के समान है — केवल मेथड का नाम बदलता है।

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Monthly trend data ---
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Page Views"
ws.cells["C1"].value = "Conversions"

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
page_views   = [4_200, 5_100, 4_800, 6_300, 7_100, 6_800]
conversions  = [  210,   255,   230,   340,   390,   360]

for i, (month, pv, cv) in enumerate(zip(months, page_views, conversions), start=2):
    ws.cells[f"A{i}"].value = month
    ws.cells[f"B{i}"].value = pv
    ws.cells[f"C{i}"].value = cv

##--- Line chart below the data ---
chart = ws.charts.add_line(8, 0, 24, 8)

chart.title = "Monthly Website Metrics"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Page Views")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Conversions")
chart.show_legend = True
chart.legend_position = "bottom"

workbook.save("line_chart.xlsx")
print("Saved line_chart.xlsx")

चार्ट शीर्षक और लेजेंड

चार्ट शीर्षक को सीधे chart.title को एक साधारण स्ट्रिंग असाइन करके सेट करें। यह प्रॉपर्टी एक str स्वीकार करती है — इस लाइब्रेरी में मौजूद नहीं होने वाले उप‑प्रॉपर्टी जैसे .title.text तक पहुँचने का प्रयास न करें।

##Correct
chart.title = "Quarterly Sales"

##Wrong — raises AttributeError
##chart.title.text = "Quarterly Sales"

लेजेंड की दृश्यता और स्थिति दो गुणों द्वारा नियंत्रित की जाती है:

chart.show_legend = True          # display the legend
chart.legend_position = "bottom"  # "bottom", "top", "left", "right"

लेजेंड को पूरी तरह छिपाने के लिए, chart.show_legend = False सेट करें। जब लेजेंड छिपा हो तो legend_position मान को नजरअंदाज किया जाता है।


डेटा श्रृंखला कॉन्फ़िगरेशन

chart.n_series.add() का उपयोग करके डेटा रेंज को चार्ट से संलग्न करें। सभी
तर्कों को कीवर्ड आर्ग्युमेंट्स के रूप में पास करें ताकि स्थितिक्रम भ्रम से बचा जा सके:

chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")

आप एक ही चार्ट में कई श्रृंखलाएँ जोड़ सकते हैं n_series.add को अधिक एक बार कॉल करके। प्रत्येक कॉल एक नई श्रृंखला जोड़ता है:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "North"
ws.cells["C1"].value = "South"
ws.cells["D1"].value = "East"

data = [
    ("Q1", 8_400, 6_100, 7_200),
    ("Q2", 9_200, 7_400, 8_100),
    ("Q3", 10_500, 8_900, 9_600),
    ("Q4", 11_800, 9_300, 10_200),
]

for i, row in enumerate(data, start=2):
    ws.cells[f"A{i}"].value = row[0]
    ws.cells[f"B{i}"].value = row[1]
    ws.cells[f"C{i}"].value = row[2]
    ws.cells[f"D{i}"].value = row[3]

chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Regional Sales by Quarter"

chart.n_series.add("B2:B5", category_data="A2:A5", name="North")
chart.n_series.add("C2:C5", category_data="A2:A5", name="South")
chart.n_series.add("D2:D5", category_data="A2:A5", name="East")

chart.show_legend = True
chart.legend_position = "bottom"

workbook.save("multi_series_chart.xlsx")
print("Saved multi_series_chart.xlsx")

श्रेणी डेटा

श्रेणी लेबल्स चार्ट स्तर पर या व्यक्तिगत श्रृंखला स्तर पर सेट किए जा सकते हैं।

Chart-level category data सभी श्रृंखलाओं पर डिफ़ॉल्ट रूप में लागू होता है:

chart.category_data = "A2:A5"

सीरीज़-स्तर श्रेणी डेटा (via the category_data keyword argument to n_series.add) उस विशिष्ट श्रृंखला के लिए चार्ट-स्तर सेटिंग को ओवरराइड करता है:

chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")

जब प्रत्येक श्रृंखला एक ही श्रेणी सीमा साझा करती है, तो chart.category_data
एक बार सेट करना अधिक संक्षिप्त है। जब श्रृंखलाओं की श्रेणी सीमाएँ अलग‑अलग हों — उदाहरण के लिए,
दो डेटासेट जिनकी समय अवधि अलग हो — per-series कीवर्ड आर्ग्यूमेंट का उपयोग करें
इसके बजाय।


चार्ट पोजिशनिंग

हर add_* मेथड के चार स्थितिक पैरामीटर शीट में एक बाउंडिंग आयत को परिभाषित करते हैं, जिसे शून्य-आधारित पंक्ति और स्तंभ सूचकांकों में मापा जाता है:

add_bar(top_row, left_col, bottom_row, right_col)
पैरामीटरअर्थ
top_rowचार्ट द्वारा कब्जा किए गए पहले पंक्ति का शून्य-आधारित सूचकांक
left_colसबसे बाएँ कॉलम का शून्य-आधारित सूचकांक
bottom_rowचार्ट द्वारा कब्जा किए गए अंतिम पंक्ति का शून्य-आधारित सूचकांक
right_colसबसे दाएँ कॉलम का शून्य-आधारित सूचकांक

एक सामान्य पैटर्न यह है कि चार्ट को डेटा के ठीक नीचे रखा जाए। यदि आपका डेटा एक्सेल पंक्ति 6 (शून्य‑आधारित पंक्ति सूचकांक 5) पर समाप्त होता है, तो चार्ट को top_row=6 पर शुरू करें:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Data in rows 1–5 (zero-based 0–4)
labels = ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"]
values = [30, 45, 28, 60, 52]

ws.cells["A1"].value = "Category"
ws.cells["B1"].value = "Score"

for i, (label, val) in enumerate(zip(labels, values), start=2):
    ws.cells[f"A{i}"].value = label
    ws.cells[f"B{i}"].value = val

##Data ends at zero-based row 5 (Excel row 6).
##Place chart from row 6 to row 22, columns A–H (0–7).
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Category Scores"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Score")
chart.show_legend = False

workbook.save("positioned_chart.xlsx")
print("Saved positioned_chart.xlsx")

चार्ट को पढ़ने योग्य बनाने के लिए पर्याप्त ऊँचा बनाएं: कम से कम 15 पंक्तियों की ऊँचाई
(bottom_row - top_row >= 15) और कम से कम 6 कॉलम की चौड़ाई एक उचित
प्रारंभिक बिंदु है।


सामान्य गलतियाँ

WrongRightWhy
ws.charts.add(ChartType.COLUMN, ...)ws.charts.add_bar(...)असमर्थित प्रकारों के लिए ws.charts.add(ChartType.X, ...) को सीधे न बुलाएँ — यह 16 चार्ट प्रकारों में से 11 के लिए NotImplementedError उत्पन्न करेगा। इसके बजाय add_bar(), add_line(), add_pie(), add_area() या add_stock() का उपयोग करें।
chart.title.text = "My Chart"chart.title = "My Chart"chart.title एक साधारण स्ट्रिंग प्रॉपर्टी है, न कि .text उप-प्रॉपर्टी वाले ऑब्जेक्ट की।
chart.n_series.add("B2:B5", "A2:A5", "Revenue")chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")दूसरे और तीसरे पैरामीटर को अस्पष्टता से बचने के लिए कीवर्ड आर्ग्यूमेंट्स के रूप में पास करना चाहिए।
chart = ws.charts.add_bar(0, 0, 15, 7) (overlaps data)top_row को अंतिम डेटा पंक्ति के नीचे रखेंएक चार्ट जो डेटा के ऊपर ओवरलैप करता है, मानों को छिपा देता है और भ्रमित करने वाले लेआउट बनाता है।
chart.legend_position = "bottom" without chart.show_legend = Trueपहले chart.show_legend = True सेट करेंlegend_position का कोई प्रभाव नहीं होता जब show_legend False हो।

संबंधित देखें

  • API Reference: aspose.cells_foss के लिए पूर्ण क्लास और मेथड दस्तावेज़ीकरण
  • Knowledge Base: कार्य-उन्मुख कैसे‑करें गाइड
  • Product Overview: विशेषताएँ और क्षमताओं का सारांश
  • Getting Started / Installation: pip इंस्टॉल और सेटअप
  • Blog: Python Excel Chart Tutorial: चरण‑दर‑चरण चार्ट निर्माण गाइड
 हिन्दी