Python XlsxWriter – 添加图表

Python XlsxWriter – 添加图表

Excel最重要的功能之一是它能够将数据转换成图表。图表是数据的一种可视化表示。不同类型的图表可以从 图表 菜单中生成。

Python XlsxWriter - 添加图表

为了以编程方式生成图表,XlsxWriter库有一个图表类。它的对象是通过调用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!A1:A5'})
chart.add_series({'values': '=Sheet1!B1:B5'})
chart.add_series({'values': '=Sheet1!C1:C5'})

worksheet.insert_chart('B7', chart)

wb.close()

输出

生成的图表被嵌入到工作表中,并显示如下—-。

Python XlsxWriter - 添加图表

add_series() 方法有以下额外参数

  • Values – 这是最重要的属性强制选项。它将图表与它所显示的工作表数据联系起来。

  • Categories – 这设置了图表的类别标签。如果没有给出,图表将只是假设一个从1…n开始的连续系列。

  • Name – 设置系列的名称。该名称会显示在公式栏中。

  • Line – 设置系列线型的属性,如颜色和宽度。

  • Border – 设置系列的边框属性,如颜色和样式。

  • Fill – 设置系列的固体填充属性,如颜色。

  • Pattern – 设置系列的图案填充属性。

  • Gradient – 设置系列的梯度填充属性。

  • data_labels – 为系列设置数据标签。

  • Points – 为系列中的单个点设置属性。

在下面的例子中,在添加数据系列的同时,定义了值和类别属性。这个例子的数据是–

# Add the worksheet data that the charts will refer to.
headings = ['Name', 'Phy', 'Maths']
data = [
   ["Jay",   30, 60],
   ["Mohan", 40, 50],
   ["Veeru", 60, 70],
]

创建图表对象后,第一个数据系列对应于以phy为名称属性值的列。第一列中学生的名字被用作类别

chart1.add_series({
   'name': '=Sheet1!B1',
   'categories': '=Sheet1!A2:A4',
   'values': '=Sheet1!B2:B4',
})

第二个数据系列也是指A列中的名称为类别,C列中的标题为Maths,作为数值属性。

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!B1',
   'categories': '=Sheet1!A2:A4',
   'values': '=Sheet1!B2:B4',
})

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()

输出

工作表和基于它的图表显示如下– 1.

Python XlsxWriter - 添加图表

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!B1',
   'categories': '=Sheet1!A2:A4',
   'values': '=Sheet1!B2:B4',
   '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 。 柱状图 现在显示了 数据 标签。

Python XlsxWriter - 添加图表

数据标签可以显示在所有类型的图表中。数据标签的位置参数可以设置为顶部、底部、左侧或右侧。

XlsxWriter支持以下类型的图表

  • Area – 创建一个区域(填充线)风格的图表。

  • Bar – 创建一个条形风格(转置的柱状图)的图表。

  • Column – 创建一个柱状风格(直方图)的图表。

  • Line – 创建一个线形风格的图表。

  • Pie – 创建一个饼图风格的图表。

  • Doughnut – 创建一个Doughnut风格的图表。

  • Scatter – 创建一个散点图。

  • Stock – 创建一个股票风格的图表。

  • Radar – 创建一个雷达风格的图表。

许多图表类型也有子类型。例如,柱状图、条状图、面积图和线状图都有叠加和 百分比叠加的 子类型。类型和子类型的参数可以在 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_offsety_offset 值的单位是像素,而 x_scaley_scale 值则用于水平/垂直地缩放图表。描述字段可用于指定图表的描述或 “alt文本 “字符串。

decorative 参数用于将图表标记为装饰性的,因此对自动屏幕阅读器来说是无信息的。它必须被设置为True/False。最后, object_position 参数控制图表的对象定位。它允许以下数值 –

  • 1 – 移动并调整单元格大小(默认)。

  • 2 – 移动,但不随单元格大小变化。

  • 3 – 不随单元格移动或调整大小。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程