openpyxl একটি পপুলার লাইব্রেরি এক্সেল ফাইল পড়া, লিখা এবং চার্ট তৈরির জন্য। এটি XlsxWriter-এর চেয়ে বেশি ফিচার সাপোর্ট করে (যেমন: বিদ্যমান ফাইল মডিফাই, ফর্মুলা ক্যালকুলেশন)। নিচে বাবল চার্ট (Bubble Chart) তৈরির উদাহরণ দেওয়া হলো।
প্রয়োজনীয় লাইব্রেরি
pip install openpyxl
সম্পূর্ণ উদাহরণ: বাবল চার্ট
import openpyxl
from openpyxl.chart import BubbleChart, Reference, Series
# ১. ওয়ার্কবুক এবং শিট
wb = openpyxl.Workbook()
sheet = wb.active
# ২. ডেটা লিখুন (৩ কলাম: X, Y, Size)
rows = [
("Number of Products", "Sales in USD", "Market share"),
(14, 12200, 15),
(20, 60000, 33),
(18, 24400, 10),
(22, 32000, 42),
]
for row in rows:
sheet.append(row)
# ৩. বাবল চার্ট অবজেক্ট
chart = BubbleChart()
# ৪. ডেটা রেফারেন্স ডিফাইন করুন
xvalues = Reference(sheet, min_col=1, min_row=2, max_row=5)
yvalues = Reference(sheet, min_col=2, min_row=2, max_row=5)
size = Reference(sheet, min_col=3, min_row=2, max_row=5)
# ৫. সিরিজ তৈরি করুন
series = Series(values=yvalues, xvalues=xvalues, zvalues=size, title="2013")
chart.series.append(series)
# ৬. চার্ট ফরম্যাটিং
chart.title = "BUBBLE CHART"
chart.x_axis.title = "X_AXIS (Number of Products)"
chart.y_axis.title = "Y_AXIS (Sales in USD)"
# ৭. চার্ট ইনসার্ট
sheet.add_chart(chart, "E2")
# ৮. সেভ
wb.save("bubbleChart.xlsx")
print("বাবল চার্ট তৈরি হয়েছে: bubbleChart.xlsx")
বাবল চার্ট কী?
বাবল চার্ট তিনটি মাত্রা (X, Y, Size) দেখায়। এটি স্ক্যাটার প্লটের এক্সটেনশন যেখানে থার্ড ভেরিয়েবল বাবলের আকারে এনকোড করা হয়।
openpyxl vs XlsxWriter
| ফিচার | openpyxl | XlsxWriter |
|---|---|---|
| বিদ্যমান ফাইল পড়া/মডিফাই | ✅ হ্যাঁ | ❌ না (শুধু লিখতে পারে) |
| ফর্মুলা ক্যালকুলেশন | ✅ (data_only=True) | ❌ |
| চার্ট টাইপ সমর্থন | বেশিরভাগ (Bubble, Radar, 3D) | প্রায় সব (Stock, Surface ইত্যাদি) |
| পারফরম্যান্স (বড় ফাইল) | মাঝারি | দ্রুত (স্ট্রিমিং রাইট) |
| স্টাইল/থিম | সীমিত | ৪৮টি বিল্ট-ইন স্টাইল |
বাবল চার্ট কাস্টমাইজেশন
# বাবল সাইজ স্কেলিং chart.bubble_scale = 100 # ডিফল্ট 100, ০-৩০০ # বাবল ৩D ইফেক্ট chart.style = 15 # লেজেন্ড পজিশন chart.legend.position = 'r' # 'l', 'r', 't', 'b' # মาร์কার স্টাইল series.graphicalProperties.line.solidFill = "0000FF" series.graphicalProperties.line.width = 20000 # EMU units
সেরা অনুশীলন
- নতুন ফাইল তৈরি করলে: XlsxWriter (দ্রুত, বেশি চার্ট ফিচার)।
- বিদ্যমান ফাইল মডিফাই করলে: openpyxl (একমাত্র অপশন)।
- বাবল চার্টে বাবল সাইজ নরমালাইজ করুন (০-১০০ রেঞ্জে) ভালো ভিজ্যুয়ালাইজেশনের জন্য।