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