- 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 - 文本框
- 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 ()方法具有以下附加参数 -
值- 这是最重要的属性强制选项。它将图表与其显示的工作表数据链接起来。
类别- 设置图表类别标签。如果未给出,图表将仅假定从 1…n 的连续序列。
名称- 设置系列的名称。该名称显示在公式栏中。
线- 设置系列线类型的属性,例如颜色和宽度。
边框- 设置系列的边框属性,例如颜色和样式。
填充- 设置系列的纯色填充属性,例如颜色。
图案- 设置系列的图案填充属性。
渐变- 设置系列的渐变填充属性。
data_labels - 设置系列的数据标签。
点- 设置系列中各个点的属性。
在以下示例中,在添加数据系列时,定义了值和类别属性。该示例的数据是 -
# 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 列中的名称引用为值属性。
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 支持以下类型的图表 -
区域- 创建区域(实心线)样式图表。
条形图- 创建条形图样式(转置直方图)图表。
柱- 创建柱形(直方图)图表。
线条- 创建线条样式图表。
饼图- 创建饼图样式图表。
甜甜圈- 创建甜甜圈样式图表。
Scatter - 创建散点样式图表。
Stock - 创建股票样式图表。
雷达- 创建雷达样式图表。
许多图表类型也有子类型。例如,柱形图、条形图、面积图和折线图的子类型为 stacked 和percent_stacked。类型和子类型参数可以在add_chart()方法中给出。
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值用于水平/垂直缩放图表。描述字段可用于指定图表的描述或“替代文本”字符串。
装饰参数用于将图表标记为装饰性的,因此对于自动屏幕阅读器来说不提供任何信息。它必须设置为 True/False。最后,object_position参数控制图表的对象定位。它允许以下值 -
1 - 使用单元格移动和调整大小(默认)。
2 - 移动但不调整单元格大小。
3 - 不要移动细胞或调整细胞大小。