Chart ประกอบด้วย Series อย่างน้อย 1 ชุด ซึ่งอ้างอิงช่วงเซลล์ สำหรับการวาดกราฟใน Excel: สร้าง Chart object → ใส่ข้อมูล → เพิ่ม Chart เข้า Worksheet
ตัวอย่างโค้ด: Column Chart พร้อม Pattern Fill
import xlsxwriter
workbook = xlsxwriter.Workbook('chart_pattern.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': 1})
headings = ['Shingle', 'Brick']
data = [
[105, 150, 130, 90],
[50, 120, 100, 110],
]
worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
# สร้าง Column Chart
chart = workbook.add_chart({'type': 'column'})
# Series 1: Shingle pattern
chart.add_series({
'name': '=Sheet1!$A$1',
'values': '=Sheet1!$A$2:$A$5',
'pattern': {
'pattern': 'shingle',
'fg_color': '#804000',
'bg_color': '#C68C53',
},
'border': {'color': '#804000'},
'gap': 70,
})
# Series 2: Horizontal Brick pattern
chart.add_series({
'name': '=Sheet1!$B$1',
'values': '=Sheet1!$B$2:$B$5',
'pattern': {
'pattern': 'horizontal_brick',
'fg_color': '#B30000',
'bg_color': '#FF6666',
},
'border': {'color': '#B30000'},
})
chart.set_title({'name': 'Cladding types'})
chart.set_x_axis({'name': 'Region'})
chart.set_y_axis({'name': 'Number of houses'})
worksheet.insert_chart('D2', chart, {'x_offset': 25, 'y_offset': 10})
workbook.close()
Pattern Types ที่รองรับ
XlsxWriter รองรับ pattern ทั้งหมด 48 รูปแบบ (index 1-48 หรือชื่อ):
# Pattern names ตัวอย่าง
'percent_5', 'percent_10', 'percent_20', 'percent_25', 'percent_30',
'percent_40', 'percent_50', 'percent_60', 'percent_70', 'percent_75',
'percent_80', 'percent_90',
'light_horizontal', 'light_vertical', 'light_down', 'light_up',
'dark_horizontal', 'dark_vertical', 'dark_down', 'dark_up',
'wide_downward', 'wide_upward', 'narrow_vertical', 'narrow_horizontal',
'dark_grid', 'light_grid', 'dark_trellis', 'light_trellis',
'horizontal_brick', 'vertical_brick', 'thin_horizontal', 'thin_vertical',
'shingle', 'wave', 'diagonal_brick', 'divot', 'dotted_grid',
'dotted_percent_75', 'solid_diamonds', 'checker_board', 'solid'
Pattern Fill Properties
'pattern': {
'pattern': 'shingle', # Pattern name (required)
'fg_color': '#804000', # Foreground color
'bg_color': '#C68C53', # Background color
}
เมื่อไหร่ควรใช้ Pattern Fill
- พิมพ์ขาวดำ (Black & White printing) - Pattern ช่วยแยกแยะได้
- Accessibility - คนพิการสีเห็น pattern ได้
- รายงานทางการพิมพ์ - ไม่ต้องพึ่งสีเพียงอย่างเดียว
- Overlapping series - Pattern ช่วยแยก series ได้ดีกว่าสีเดียว
Gradient Fill (ทางเลือกอื่น)
chart.add_series({
'values': '=Sheet1!$B$2:$B$7',
'gradient': {
'colors': ['#963735', '#F1DCDB'], # 2-color gradient
},
})
สรุป
- ใช้
patternproperty ใน add_series() - ระบุ pattern name, fg_color, bg_color
- Pattern มี 48 รูปแบบ เลือกได้ตามความต้องการ
- เหมาะสำหรับการพิมพ์ขาวดำและ Accessibility
- Gap property ควบคุมช่องว่างระหว่างแท่ง (ทำให้ pattern ชัดเจนขึ้น)