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

Python - วาด Excel Chart ด้วย Pattern Fills ใน Column Chart

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
    },
})

สรุป

  • ใช้ pattern property ใน add_series()
  • ระบุ pattern name, fg_color, bg_color
  • Pattern มี 48 รูปแบบ เลือกได้ตามความต้องการ
  • เหมาะสำหรับการพิมพ์ขาวดำและ Accessibility
  • Gap property ควบคุมช่องว่างระหว่างแท่ง (ทำให้ pattern ชัดเจนขึ้น)