下面我将为您介绍使用Python中的xlsxwriter库生成图表的完整实例教程。
1. 安装xlsxwriter库
使用pip命令进行安装
pip install xlsxwriter
2. 基本用法
2.1 创建Excel表格
首先,我们需要创建一个Excel表格,代码如下所示:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet('示例')
# 写入数据
worksheet.write('A1', '2017年')
worksheet.write('A2', '2018年')
worksheet.write('A3', '2019年')
worksheet.write('B1', 5000)
worksheet.write('B2', 8000)
worksheet.write('B3', 10000)
workbook.close()
在这段代码中,我们首先创建一个Workbook对象,然后使用add_worksheet()方法创建一个名为“示例”的工作表。接下来使用write()方法向单元格中写入数据。
2.2 创建图表
接着,我们需要使用Chart对象来创建图表。Excel支持多种类型的图表,例如柱状图、折线图、饼状图等。
下面以柱状图为例,创建一个简单的柱状图:
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet('示例')
# 写入数据
worksheet.write('A1', '2017年')
worksheet.write('A2', '2018年')
worksheet.write('A3', '2019年')
worksheet.write('B1', 5000)
worksheet.write('B2', 8000)
worksheet.write('B3', 10000)
# 创建柱状图
chart = workbook.add_chart({'type': 'column'})
# 设置图表数据
chart.add_series({
'name': '示例',
'categories': '=示例!$A$1:$A$3',
'values': '=示例!$B$1:$B$3',
})
# 将图表插入到工作表
worksheet.insert_chart('C1', chart)
workbook.close()
可见,我们首先使用add_chart()方法创建一个类型为“column”的柱状图。接着,使用add_series()方法设置图表的数据,并使用insert_chart()方法将图表插入到工作表中。
2.3 设置图表样式
除了设置图表的类型和数据之外,我们还可以设置图表的样式,例如标题、坐标轴、图例等。
import xlsxwriter
workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet('示例')
# 写入数据
worksheet.write('A1', '2017年')
worksheet.write('A2', '2018年')
worksheet.write('A3', '2019年')
worksheet.write('B1', 5000)
worksheet.write('B2', 8000)
worksheet.write('B3', 10000)
# 创建柱状图
chart = workbook.add_chart({'type': 'column'})
# 设置图表数据
chart.add_series({
'name': '示例',
'categories': '=示例!$A$1:$A$3',
'values': '=示例!$B$1:$B$3',
})
# 设置图表标题
chart.set_title({'name': '销售统计'})
# 设置横坐标轴名称
chart.set_x_axis({'name': '年份'})
# 设置纵坐标轴名称
chart.set_y_axis({'name': '销售额'})
# 将图表插入到工作表
worksheet.insert_chart('C1', chart)
workbook.close()
在这段代码中,我们使用Chart对象的set_title()、set_x_axis()、set_y_axis()方法设置图表的标题、横坐标轴名称、纵坐标轴名称。
3. 应用示例
下面,我们将通过两个实际示例来展示xlsxwriter库生成图表的应用。
3.1 生成折线图
以下示例中,我们将使用Python中的随机数生成器生成 20 个数据点,并将这些数据点绘制成一条折线图。
import xlsxwriter
import random
# 创建Excel表格
workbook = xlsxwriter.Workbook('line_chart.xlsx')
worksheet = workbook.add_worksheet()
# 设置表格格式
bold = workbook.add_format({'bold': True})
# 写入数据
worksheet.write('A1', '序号', bold)
worksheet.write('B1', '数据', bold)
for i in range(20):
worksheet.write(i+1, 0, i+1)
worksheet.write(i+1, 1, random.randint(0, 100))
# 创建折线图
chart = workbook.add_chart({'type': 'line'})
# 设置图表数据
chart.add_series({
'name': '数据',
'categories': '=Sheet1!$A$2:$A$21',
'values': '=Sheet1!$B$2:$B$21',
})
# 设置图表标题
chart.set_title({'name': '折线图示例'})
# 将图表插入到工作表
worksheet.insert_chart('D2', chart)
# 关闭Excel表格
workbook.close()
在该示例中,我们首先创建一个Workbook对象,并使用add_worksheet()方法创建一个名为“Sheet1”的工作表。接着,我们使用write()方法向工作表中写入数据。然后使用add_chart()方法创建一个类型为“line”的折线图,使用add_series()方法设置图表数据,使用set_title()方法设置图表标题,最后使用insert_chart()方法将图表插入到工作表中。
3.2 生成饼状图
以下示例中,我们将使用Python中的字典类型作为数据源,生成一个按比例分配的饼状图。
import xlsxwriter
# 创建Excel表格
workbook = xlsxwriter.Workbook('pie_chart.xlsx')
worksheet = workbook.add_worksheet()
# 设置表格格式
bold = workbook.add_format({'bold': True})
# 写入数据
worksheet.write('A1', '部门', bold)
worksheet.write('B1', '销售额', bold)
data = {'技术部': 30000, '市场部': 20000, '财务部': 15000}
row_index = 1
for department, sales in data.items():
worksheet.write(row_index, 0, department)
worksheet.write(row_index, 1, sales)
row_index += 1
# 创建饼状图
chart = workbook.add_chart({'type': 'pie'})
# 设置图表数据
chart.add_series({
'name': '销售额',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
})
# 将图表插入到工作表
worksheet.insert_chart('D2', chart)
# 关闭Excel表格
workbook.close()
在该示例中,我们首先创建一个Workbook对象,并使用add_worksheet()方法创建一个名为“Sheet1”的工作表。接着,我们使用write()方法向工作表中写入数据。然后使用add_chart()方法创建一个类型为“pie”的饼状图,使用add_series()方法设置图表数据,最后使用insert_chart()方法将图表插入到工作表中。
4. 总结
通过上述示例,我们可以看到,使用xlsxwriter库生成图表非常简单。只需要创建一个Workbook对象,然后向工作表中写入数据,并使用Chart对象创建图表并设置数据源和样式,最后将图表插入到工作表中。同时还可以使用Python中丰富的数据结构和算法来生成数据源,或者使用其他Python库来读取数据源。