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
| Feature | Method | Chart Types |
|---|---|---|
| Up-Down Bars | set_up_down_bars() | Line, Stock |
| High-Low Lines | set_high_low_lines() | Line |
| Drop Lines | set_drop_lines() | Line, Area |
| Series Lines (Stacked) | set_series_lines() | Stacked Column/Bar |
| Error Bars | add_series({'y_error_bars': {...}}) | Line, Scatter, Column, Bar |
| Trendlines | add_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