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

Python - วาด Bar Chart ใน Excel ด้วย XlsxWriter

Bar chart (กราฟแท่งแนวนอน) แสดงข้อมูลหมวดหมู่ด้วยแท่งสี่เหลี่ยม ความยาวสัมพันธ์กับค่า แท่งสามารถวางแนวตั้งหรือแนวนอน Column chart คือ Bar chart แนวตั้ง

ตัวอย่างโค้ด


import xlsxwriter

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

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

headings = ['Number', 'Batch 1', 'Batch 2']
data = [
    [2, 3, 4, 5, 6, 7],
    [80, 80, 100, 60, 50, 100],
    [60, 50, 60, 20, 10, 20],
]

worksheet.write_row('A1', headings, bold)
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

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

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

chart1.add_series({
    'name': ['Sheet1', 0, 2],
    'categories': ['Sheet1', 1, 0, 6, 0],
    'values': ['Sheet1', 1, 2, 6, 2],
})

chart1.set_title({'name': 'Results of data analysis'})
chart1.set_x_axis({'name': 'Test number'})
chart1.set_y_axis({'name': 'Data length (mm)'})
chart1.set_style(11)

worksheet.insert_chart('E2', chart1)
workbook.close()

Bar Chart Subtypes


chart = workbook.add_chart({'type': 'bar'})                          # Clustered (default)
chart = workbook.add_chart({'type': 'bar', 'subtype': 'stacked'})    # Stacked
chart = workbook.add_chart({'type': 'bar', 'subtype': 'percent_stacked'})  # 100% Stacked
chart = workbook.add_chart({'type': 'bar', 'subtype': '3d'})         # 3D

เมื่อไหร่ควรใช้ Bar Chart แทน Column Chart

  • Category names ยาว (อ่านง่ายกว่าบนแกน Y)
  • Categories มากกว่า 10-15 ตัว
  • ต้องการเน้นการเปรียบเทียบความยาว
  • Ranking / Leaderboard

การปรับแต่ง Bar Chart


# Gap Width
chart1.set_gap(50)

# Overlap
chart1.set_overlap(10)

# Data Labels
chart1.add_series({
    'values': '=Sheet1!$B$2:$B$7',
    'data_labels': {
        'value': True,
        'position': 'outside_end',
        'num_format': '#,##0',
    },
})

# Pattern Fill
chart1.add_series({
    'values': '=Sheet1!$B$2:$B$7',
    'pattern': {
        'pattern': 'horizontal_brick',
        'fg_color': '#4472C4',
        'bg_color': '#FFFFFF',
    },
})

Horizontal Bar Chart with Categories on Y

ใน Bar chart แกน Y = Categories, แกน X = Values (ตรงข้าม Column)


chart1.set_y_axis({'name': 'Category', 'reverse': True})  # reverse = เรียงจากบนลงล่าง
chart1.set_x_axis({'name': 'Value'})

สรุป

  • Bar chart = แท่งแนวนอน, Column chart = แท่งแนวตั้ง
  • ใช้ Bar เมื่อ label ยาวหรือ categories เยอะ
  • Subtypes: Clustered, Stacked, 100% Stacked
  • set_gap(), set_overlap() ควบคุมรูปลักษณ์
  • รองรับ Data labels, Pattern fill, Gradient fill