Donut Chart (Doughnut chart) เป็นรูปแบบของ Pie chart แต่มีช่องว่างกลมตรงกลาง ทำให้ดูเหมือนโดนัท ช่องว่างนี้สามารถใช้แสดงข้อมูลเพิ่มเติมได้
ตัวอย่างโค้ด
import xlsxwriter
workbook = xlsxwriter.Workbook('chart_doughnut1.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': 1})
headings = ['Category', 'Values']
data = [
['Glazed', 'Chocolate', 'Cream'],
[50, 35, 15],
]
worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
# สร้าง Doughnut Chart
chart1 = workbook.add_chart({'type': 'doughnut'})
chart1.add_series({
'name': 'Doughnut sales data',
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 1, 3, 1],
})
chart1.set_title({'name': 'Popular Doughnut Types'})
chart1.set_style(10)
worksheet.insert_chart('C2', chart1, {'x_offset': 25, 'y_offset': 10})
workbook.close()
Doughnut Chart Subtypes
chart = workbook.add_chart({'type': 'doughnut'}) # Basic
chart = workbook.add_chart({'type': 'doughnut', 'subtype': 'exploded'}) # Exploded
Doughnut vs Pie Chart
| Doughnut | Pie |
|---|---|
| มีช่องว่างตรงกลาง | ไม่มีช่องว่าง |
| รองรับหลาย Series (แหวนซ้อนกัน) | รองรับ Series เดียว |
| ช่องกลางวางข้อมูลเพิ่มได้ (Total, Label) | ไม่มีพื้นที่เพิ่ม |
| อ่านง่ายกว่าเมื่อมีหลาย Series | ง่ายกว่าสำหรับ Series เดียว |
Multi-Series Doughnut (หลายแหวน)
# ข้อมูล 2 ปี
headings = ['Category', '2022', '2023']
data = [
['A', 'B', 'C'],
[30, 40, 30],
[25, 45, 30],
]
worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
chart = workbook.add_chart({'type': 'doughnut'})
chart.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
})
chart.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$C$2:$C$4',
})
# ช่องกลาง: แสดง Total
chart.set_title({'name': 'Sales by Year'})
chart.set_style(10)
การปรับขนาด Hole (Donut Hole Size)
XlsxWriter ไรรองรับการปรับขนาด hole โดยตรง แต่สามารถทำได้ด้วยการตั้งค่าใน Excel หลังสร้างไฟล์ หรือใช้ไลบรารีอื่น เช่น openpyxl
สรุป
- ใช้ Doughnut แทน Pie เมื่อมีหลาย Series หรือต้องการแสดงข้อมูลเพิ่มตรงกลาง
- จำกัด categories ไว้ 5-7 ตัว
- ใช้
set_style(10)สำหรับลุคสวยงาม (ขอบขาว + เงา) - Exploded subtype เน้น category สำคัญ