Python - 使用 XlsxWriter 模块绘制带有模式填充列的 Excel 图表

pythonserver side programmingprogramming

图表至少由一个或多个数据点的一系列组成。系列本身由对单元格范围的引用组成。要在 Excel 工作表上绘制图表,首先,创建特定图表类型(即柱形图等)的图表对象。创建图表对象后,在其中插入数据,最后,将该图表对象添加到工作表对象中。

示例

# import xlsxwriter 模块
import xlsxwriter
#Workbook() 接受一个非可选参数,即我们要创建的文件名。
workbook = xlsxwriter.Workbook('chart_pattern.xlsx')
# 然后使用工作簿对象通过 #add_worksheet() 方法添加新工作表。
worksheet = workbook.add_worksheet()
# 使用 #add_format() 方法创建一个新的 Format 对象来格式化工作表中的单元格。
# 这里我们创建粗体格式对象。
bold = workbook.add_format({'bold': 1})
# 添加图表将引用的工作表数据。
headings = ['Shingle', 'Brick']
data = [
   [105, 150, 130, 90 ],
   [50, 120, 100, 110],
]
# 从 'A1' 开始以粗体格式写入一行数据。
worksheet.write_row('A1', headlines, bold)
# 分别从 'A2'、'B2' 开始写入一列数据。
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
# 创建一个可以使用 #add_chart() 方法添加到工作表的图表对象。
# 这里我们创建一个柱形图对象
chart = workbook.add_chart({'type': 'column'})
# 使用 add_series 方法向图表添加具有模式的数据系列。# 间隙用于使模式更加明显。
# 配置第一个系列。= Sheet1 !$A$1 相当于 ['Sheet1', 0, 0]。
# 注意:b/w = and Sheet1, Sheet1 and ! 中不插入空格
# 如果插入空格,则会引发警告。
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,
})
# 配置第二个系列。
chart.add_series({
   'name': '= Sheet1 !$B$1',
   'values': '= Sheet1 !$B$2:$B$5',
   'pattern': {
      'pattern': 'horizo​​ntal_brick',
      'fg_color': '# b30000',
      'bg_color': '# ff6666'
   },
   'border': {'color': '# b30000'},
})
# 添加图表标题
chart.set_title ({'name': 'Cladding types'})
# 添加 x 轴标签
chart.set_x_axis({'name': 'Region'})
# 添加 y 轴标签
chart.set_y_axis({'name': 'Number of houses'})
# 将图表添加到工作表,图表左上角的偏移值固定到单元格 D2 。
worksheet.insert_chart('D2', chart, {'x_offset': 25, 'y_offset': 10})
# 最后,通过 close() 方法关闭 Excel 文件。
workbook.close()

相关文章