- Python XlsxWriter 教程
- Python XlsxWriter - 首页
- Python XlsxWriter - 概述
- Python XlsxWriter - 环境搭建
- Python XlsxWriter - Hello World
- Python XlsxWriter - 重要类
- Python XlsxWriter - 单元格表示法和范围
- Python XlsxWriter - 定义名称
- Python XlsxWriter - 公式和函数
- Python XlsxWriter - 日期和时间
- Python XlsxWriter - 表格
- Python XlsxWriter - 应用筛选器
- Python XlsxWriter - 字体和颜色
- Python XlsxWriter - 数字格式
- Python XlsxWriter - 边框
- Python XlsxWriter - 超链接
- Python XlsxWriter - 条件格式
- Python XlsxWriter - 添加图表
- Python XlsxWriter - 图表格式
- Python XlsxWriter - 图表图例
- Python XlsxWriter - 条形图
- Python XlsxWriter - 折线图
- Python XlsxWriter - 饼图
- Python XlsxWriter - 迷你图
- Python XlsxWriter - 数据验证
- Python XlsxWriter - 大纲和分组
- Python XlsxWriter - 冻结和分割窗格
- Python XlsxWriter - 隐藏/保护工作表
- Python XlsxWriter - 文本框
- Python XlsxWriter - 插入图片
- Python XlsxWriter - 页面设置
- Python XlsxWriter - 页眉和页脚
- Python XlsxWriter - 单元格批注
- Python XlsxWriter - 与Pandas一起使用
- Python XlsxWriter - VBA宏
- Python XlsxWriter 有用资源
- Python XlsxWriter - 快速指南
- Python XlsxWriter - 有用资源
- Python XlsxWriter - 讨论
Python XlsxWriter - 添加图表
Excel 最重要的功能之一是将数据转换为图表。图表是数据的视觉表示。可以通过图表菜单生成不同类型的图表。
为了以编程方式生成图表,XlsxWriter 库有一个 Chart 类。它的对象是通过调用 Workbook 类的add_chart()方法获得的。然后,它使用add_series()方法与工作表中的数据范围关联。然后,使用其insert_chart()方法将图表对象插入工作表。
示例
下面是显示简单柱状图的代码。
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
chart = wb.add_chart({'type': 'column'})
data = [
[10, 20, 30, 40, 50],
[20, 40, 60, 80, 100],
[30, 60, 90, 120, 150],
]
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})
worksheet.insert_chart('B7', chart)
wb.close()
输出
生成的图表嵌入在工作表中,显示如下:
add_series()方法具有以下附加参数:
Values - 这是最重要的属性,是必选选项。它将图表与其显示的工作表数据链接。
Categories - 这设置图表类别标签。如果没有给出,图表将只假设从 1…n 的顺序序列。
Name - 为序列设置名称。名称显示在公式栏中。
Line - 设置序列线类型属性,例如颜色和宽度。
Border - 设置序列的边框属性,例如颜色和样式。
Fill - 设置序列的纯色填充属性,例如颜色。
Pattern - 设置序列的图案填充属性。
Gradient - 设置序列的渐变填充属性。
data_labels - 为序列设置数据标签。
Points - 为序列中的各个点设置属性。
在下面的示例中,在添加数据序列时,定义了 value 和 categories 属性。示例数据如下:
# Add the worksheet data that the charts will refer to. headings = ['Name', 'Phy', 'Maths'] data = [ ["Jay", 30, 60], ["Mohan", 40, 50], ["Veeru", 60, 70], ]
创建图表对象后,第一个数据序列对应于 name 属性值为 phy 的列。第一列中的学生姓名用作类别。
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
})
第二个数据序列也参考 A 列中的姓名作为类别,以及标题为 Maths 的 C 列作为 values 属性。
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 2, 3, 2],
})
示例
这是完整的示例代码:
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
chart1 = wb.add_chart({'type': 'column'})
# Add the worksheet data that the charts will refer to.
headings = ['Name', 'Phy', 'Maths']
data = [
["Jay", 30, 60],
["Mohan", 40, 50],
["Veeru", 60, 70],
]
worksheet.write_row(0,0, headings)
worksheet.write_row(1,0, data[0])
worksheet.write_row(2,0, data[1])
worksheet.write_row(3,0, data[2])
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
})
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 2, 3, 2],
})
worksheet.insert_chart('B7', chart1)
wb.close()
输出
工作表和基于它的图表显示如下:
add_series() 方法也有 data_labels 属性。如果设置为 True,则绘制数据点的值将显示在每列的顶部。
示例
以下是 add_series() 方法的完整代码示例:
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
chart1 = wb.add_chart({'type': 'column'})
# Add the worksheet data that the charts will refer to.
headings = ['Name', 'Phy', 'Maths']
data = [
["Jay", 30, 60],
["Mohan", 40, 50],
["Veeru", 60, 70],
]
worksheet.write_row(0,0, headings)
worksheet.write_row(1,0, data[0])
worksheet.write_row(2,0, data[1])
worksheet.write_row(3,0, data[2])
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
'data_labels': {'value':True},
})
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 2, 3, 2],
'data_labels': {'value':True},
})
worksheet.insert_chart('B7', chart1)
wb.close()
输出
执行代码并打开Hello.xlsx。柱状图现在显示了数据标签。
数据标签可以显示在所有类型的图表中。数据标签的位置参数可以设置为顶部、底部、左侧或右侧。
XlsxWriter 支持以下类型的图表:
Area - 创建一个区域(填充线)样式图表。
Bar - 创建一个条形样式(转置直方图)图表。
Column - 创建一个柱状样式(直方图)图表。
Line - 创建一个折线样式图表。
Pie - 创建一个饼图样式图表。
Doughnut - 创建一个环形图样式图表。
Scatter - 创建一个散点图样式图表。
Stock - 创建一个股票样式图表。
Radar - 创建一个雷达图样式图表。
许多图表类型也有子类型。例如,柱状图、条形图、区域图和折线图的子类型为堆叠和percent_stacked。可以在add_chart()方法中给出 type 和 subtype 参数。
workbook.add_chart({'type': column, 'subtype': 'stacked'})
图表使用其insert_chart()方法嵌入到工作表中,该方法采用以下参数:
worksheet.insert_chart(location, chartObj, options)
options参数是一个字典,用于配置图表的位和比例。选项属性及其默认值为:
{
'x_offset': 0,
'y_offset': 0,
'x_scale': 1,
'y_scale': 1,
'object_position': 1,
'description': None,
'decorative': False,
}
x_offset和y_offset值以像素为单位,而x_scale和y_scale值用于水平/垂直缩放图表。description字段可用于为图表指定描述或“替代文本”字符串。
decorative参数用于将图表标记为装饰性的,因此对于自动屏幕阅读器来说是不提供信息的。它必须设置为 True/False。最后,object_position参数控制图表的物体定位。它允许以下值:
1 - 与单元格一起移动和调整大小(默认值)。
2 - 移动但不与单元格一起调整大小。
3 - 不与单元格一起移动或调整大小。