কম্বাইনড চার্ট (Combination Chart) দুটি ভিন্ন চার্ট টাইপ (যেমন: কলাম + লাইন) একসাথে প্লট করে, যাতে দুটি ভিন্ন স্কেল বা টাইপের ডেটা একসাথে তুলনা করা যায়। XlsxWriter-এ combine() মেথড দিয়ে এটি করা যায়।
সম্পূর্ণ উদাহরণ
import xlsxwriter
workbook = xlsxwriter.Workbook('chart_combined.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
headings = ['Number', 'Batch 1', 'Batch 2']
data = [
[2, 3, 4, 5, 6, 7],
[10, 40, 50, 20, 10, 50], # Batch 1: কলাম
[30, 60, 70, 50, 40, 30] # Batch 2: লাইন
]
worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# ১. প্রাইমারি চার্ট: কলাম
column_chart1 = workbook.add_chart({'type': 'column'})
column_chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
# ২. সেকেন্ডারি চার্ট: লাইন
line_chart1 = workbook.add_chart({'type': 'line'})
line_chart1.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
})
# ৩. কম্বাইন করুন
column_chart1.combine(line_chart1)
# ৪. ফরম্যাটিং
column_chart1.set_title({'name': 'Combined Chart - Same Y Axis'})
column_chart1.set_x_axis({'name': 'Test Number'})
column_chart1.set_y_axis({'name': 'Sample Length (mm)'})
worksheet.insert_chart('D2', column_chart1, {'x_offset': 25, 'y_offset': 10})
workbook.close()
print("কম্বাইনড চার্ট তৈরি হয়েছে: chart_combined.xlsx")
সেকেন্ডারি Y-অ্যাক্সিস (Dual Axis) — ভিন্ন স্কেলের জন্য
যদি দুটি সিরিজের স্কেল ভিন্ন হয় (যেমন: সেলস লক্ষের হাজারে, প্রফিট হাজারে), তবে সেকেন্ডারি Y-অ্যাক্সিস ব্যবহার করুন:
# লাইন চার্টে সেকেন্ডারি অ্যাক্সিস সেট করুন
line_chart1.set_y2_axis({'name': 'Profit (৳)'})
# কম্বাইন করার সময় সেকেন্ডারি অ্যাক্সিস চালু করুন
column_chart1.combine(line_chart1)
# প্রাইমারি চার্টে Y2 অ্যাক্সিস ভিজিবল করুন
column_chart1.set_y2_axis({'name': 'Profit (৳)'})
সাধারণ কম্বিনেশন টাইপস
| প্রাইমারি | সেকেন্ডারি | ব্যবহার ক্ষেত্র |
|---|---|---|
| Column | Line | ভলিউম + ট্রেন্ড (স্টক, সেলস) |
| Column | Scatter | ক্যাটেগরিক্যাল + ক্রমাগত ডেটা |
| Area | Line | কিউমুলেটিভ + মার্জিনাল ট্রেন্ড |
| Bar | Line | হরিজন্টাল বার + ট্রেন্ড লাইন |
গুরুত্বপূর্ণ নোটস
combine()শুধু প্রাইমারি চার্ট অবজেক্টে কল করতে হয় (যেমন:column_chart1.combine(line_chart1))।- প্রাইমারি চার্টের প্রোপার্টি (টাইটল, X-অ্যাক্সিস, লেজেন্ড) প্রাধান্য পায়।
- সেকেন্ডারি চার্টের
set_x_axisইগনোর হয় (শেয়ার্ড X-অ্যাক্সিস)। - ৩D চার্ট কম্বাইন করা যায় না।