चार्ट्स के साथ काम करना
अवलोकन
Aspose.Cells FOSS uses a method-per-chart-type API. Instead of a generic 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.
कॉलम चार्ट जोड़ना
नीचे दिया गया उदाहरण एक छोटा revenue-by-product डेटा सेट लिखता है और फिर डेटा के नीचे स्थित एक कॉलम चार्ट जोड़ता है।.
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.category_data = "A2:A5"सीरीज़-लेवल श्रेणी डेटा (के माध्यम से category_data कीवर्ड आर्ग्युमेंट को 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 कॉलम की चौड़ाई एक उचित प्रारंभिक बिंदु है।.
सामान्य गलतियाँ
| गलत | सही | क्यों |
|---|---|---|
ws.charts.add(ChartType.COLUMN, ...) | ws.charts.add_bar(...) | कॉल न करें ws.charts.add(ChartType.X, ...) असमर्थित प्रकारों के लिए सीधे — यह त्रुटि उत्पन्न करेगा NotImplementedError 16 में से 11 चार्ट प्रकारों के लिए। उपयोग करें 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) (डेटा ओवरलैप करता है) | रखें top_row अंतिम डेटा पंक्ति के नीचे | एक चार्ट जो डेटा को ओवरलैप करता है, मानों को छिपा देता है और भ्रमित करने वाले लेआउट बनाता है।. |
chart.legend_position = "bottom" बिना chart.show_legend = True | सेट करें chart.show_legend = True पहले | legend_position का कोई प्रभाव नहीं पड़ता जब show_legend है False. |
See Also
- API संदर्भ: पूर्ण क्लास और मेथड दस्तावेज़ीकरण के लिए
aspose.cells_foss - ज्ञान आधार: कार्य‑उन्मुख कैसे‑करें गाइड
- उत्पाद अवलोकन: विशेषताएँ और क्षमताओं का सारांश
- शुरू करना / स्थापना: pip install और सेटअप
- ब्लॉग: Python Excel चार्ट ट्यूटोरियल: चरण‑दर‑चरण चार्ट निर्माण गाइड