কম্পিউটার টিউটোরিয়াল

পাইথন - XlsxWriter দিয়ে এক্সেলে কম্বাইনড চার্ট (কলাম + লাইন) প্লট করা

কম্বাইনড চার্ট (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 (৳)'})

সাধারণ কম্বিনেশন টাইপস

প্রাইমারিসেকেন্ডারিব্যবহার ক্ষেত্র
ColumnLineভলিউম + ট্রেন্ড (স্টক, সেলস)
ColumnScatterক্যাটেগরিক্যাল + ক্রমাগত ডেটা
AreaLineকিউমুলেটিভ + মার্জিনাল ট্রেন্ড
BarLineহরিজন্টাল বার + ট্রেন্ড লাইন

গুরুত্বপূর্ণ নোটস

  • combine() শুধু প্রাইমারি চার্ট অবজেক্টে কল করতে হয় (যেমন: column_chart1.combine(line_chart1))।
  • প্রাইমারি চার্টের প্রোপার্টি (টাইটল, X-অ্যাক্সিস, লেজেন্ড) প্রাধান্য পায়।
  • সেকেন্ডারি চার্টের set_x_axis ইগনোর হয় (শেয়ার্ড X-অ্যাক্সিস)।
  • ৩D চার্ট কম্বাইন করা যায় না।
  1. পাইথনে openpyxl ব্যবহার করে এক্সেলে চার্ট তৈরি করা

  2. পাইথনে xlsxwriter মডিউল ব্যবহার করে এক্সেল ফাইল তৈরি ও লেখা

  3. পাইথন XlsxWriter মডিউল দিয়ে এক্সেল শিটে চার্টশিট যোগ করা

  4. পাইথনে openpyxl ব্যবহার করে এক্সেল ফাইল পড়া ও লিখা