Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - วาดกราฟพร้อม Data Tools (Up/Down Bars) ใน Excel ด้วย XlsxWriter

XlsxWriter เป็นไลบรารี Python สำหรับทำงานกับ Excel: สร้าง เขียน คำนวณ และวาดกราฟ

ตัวอย่างโค้ด: Line Chart พร้อม Up-Down Bars


import xlsxwriter

workbook = xlsxwriter.Workbook('updown_chart.xlsx')
worksheet = workbook.add_worksheet()

italic = workbook.add_format({'italic': 1})

Data1 = ['Subject', 'Mid Exam Score', 'End Exam Score']
Data2 = [
    ["Math", "Physics", "Computer", "Hindi", "English", "chemistry"],
    [90, 78, 60, 80, 60, 90],
    [45, 39, 30, 40, 30, 60]
]

worksheet.write_row('A1', Data1, italic)
worksheet.write_column('A2', Data2[0])
worksheet.write_column('B2', Data2[1])
worksheet.write_column('C2', Data2[2])

worksheet.set_column('B:C', 15)

# สร้าง Line Chart
chart1 = workbook.add_chart({'type': 'line'})

# เปิด Up-Down Bars (แสดงความต่างระหว่าง 2 series)
chart1.set_up_down_bars()

chart1.add_series({
    'categories': '=Sheet1!$A$2:$A$7',
    'values': '=Sheet1!$B$2:$B$7',
})

chart1.add_series({
    'categories': '=Sheet1!$A$2:$A$7',
    'values': '=Sheet1!$C$2:$C$7',
})

chart1.set_title({'name': 'Exam Score Distribution'})
chart1.set_x_axis({'name': 'Subjects'})
chart1.set_y_axis({'name': 'Marks'})
chart1.set_style(11)

worksheet.insert_chart('D2', chart1, {'x_offset': 20, 'y_offset': 5})
workbook.close()

Up-Down Bars คืออะไร?

  • แสดงความต่างระหว่างจุดข้อมูลของ 2 series
  • Up Bar (สีเขียวปกติ): Series 2 > Series 1 (คะแนนเพิ่มขึ้น)
  • Down Bar (สีแดงปกติ): Series 2 < Series 1 (คะแนนลดลง)
  • ใช้ได้กับ Line chart และ Stock chart

การปรับแต่ง Up-Down Bars


# ปรับสี Up/Down bars
chart1.set_up_down_bars(
    up_bars={'fill': {'color': '#548235'}},      # สีขึ้น
    down_bars={'fill': {'color': '#C00000'}},    # สีลง
)

# หรือปิด
chart1.set_up_down_bars({'visible': False})

Data Tools อื่นๆ ใน XlsxWriter

FeatureMethodChart Types
Up-Down Barsset_up_down_bars()Line, Stock
High-Low Linesset_high_low_lines()Line
Drop Linesset_drop_lines()Line, Area
Series Lines (Stacked)set_series_lines()Stacked Column/Bar
Error Barsadd_series({'y_error_bars': {...}})Line, Scatter, Column, Bar
Trendlinesadd_series({'trendline': {'type': 'linear'}})Line, Scatter, Column, Bar

ตัวอย่าง: Error Bars และ Trendline


chart1.add_series({
    'categories': '=Sheet1!$A$2:$A$7',
    'values': '=Sheet1!$B$2:$B$7',
    'y_error_bars': {
        'type': 'custom',
        'plus_values': '=Sheet1!$D$2:$D$7',   # ค่า error บน
        'minus_values': '=Sheet1!$E$2:$E$7',  # ค่า error ล่าง
        'end_cap': True,
    },
    'trendline': {
        'type': 'linear',
        'display_equation': True,
        'display_r_squared': True,
        'line': {'color': 'red', 'dash_type': 'dash'},
    },
})

สรุป

  • set_up_down_bars() เปิด Up-Down bars สำหรับเปรียบเทียบ 2 series
  • เหมาะสำหรับ Before/After, Target/Actual, Mid/End comparison
  • รองรับการปรับสี Up/Down bars แยกกัน
  • Data tools อื่นๆ: High-Low lines, Drop lines, Error bars, Trendlines