Python Xlsxwriter 简明教程

Python XlsxWriter - Sparklines

sparkline 是一种小型图表,没有坐标轴或坐标。它提供某个参数变化的表示形式。普通图表尺寸更大,具有许多说明性特征,例如标题、图例、数据标签等,并且与附带文本分开。另一方面,迷你图尺寸很小,可以嵌入文本中,也可以嵌入具有其上下文的文本或工作表单元格中。

Edward Tufte 于 1983 年引入了火花图功能。Microsoft 于 2010 年在 Excel 中引入了火花图。我们可以在 Excel 软件的插入功能区中找到火花图选项。

火花图有三种类型 -

  1. line - 类似折线图

  2. column - 类似柱状图

  3. win_loss - 是否每个值都是正值(赢)或负值(输)。

Working with XlsxWriter Sparklines

XlsxWriter 模块有 add_sparkline() 方法。它基本上需要火花图的单元格位置和要表示为火花图的数据范围。此外,还可以以字典对象的形式提供其他参数,例如类型、样式等。默认情况下,类型为折线。

Example

以下程序表示在折线和柱状火花图中相同的数字列表。

import xlsxwriter

wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()

data=[12,23,9,17,31,3,7,21,10,15]

ws.write_row('A1', data)
ws.set_column('K:K', 40)
ws.set_row(0, 30)
ws.add_sparkline('K1', {'range':'Sheet1!A1:J1'})

ws.write_row('A5', data)
ws.set_column('K:K', 40)
ws.set_row(4, 30)
ws.add_sparkline('K5', {'range':'Sheet1!A5:J5', 'type':'column'})

wb.close()

Output

火花图被添加到单元格 K 中。

sparklines

属性为 -

  1. range - 是必需的参数。它指定火花图将绘制的单元格数据范围。

  2. type - 指定火花图的类型。有 3 种可用的火花图类型:折线、柱状和盈亏。

  3. markers - 为折线样式火花图开启标记

  4. style - 在 MS Excel 中定义的火花图样式。有 36 种样式类型。

  5. negative_points - 如果设置为 True,则突出显示火花图中的负值点。

Example

以下程序生成一个有 markersline sparkline 和一个突出显示负值点的 win_loss sparkline

import xlsxwriter

wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()

data=[12,23,9,17,31,3,7,21,10,15]
ws.write_row('A1', data)
ws.set_column('K:K', 40)
ws.set_row(0, 30)

data=[1,1,-1,-1,-1,1,1,1,-1,-1]
ws.write_row('A5', data)
ws.set_column('K:K', 40)
ws.set_row(4, 30)
ws.add_sparkline('K1', {'range':'Sheet1!A1:J1', 'markers':True})
ws.add_sparkline('K5', {'range':'Sheet1!A5:J5', 'type':'win_loss',
'negative_points':True})

wb.close()

Output

K1 中的折线火花图有标记。K5 中的火花图显示负值突出显示。

line sparkline

Example – Style Types

以下代码显示了柱状火花图中的一系列数字。这里使用了十种不同的样式类型。

import xlsxwriter

wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()

data=[12,23,9,17,31,3,7,21,10,15]
ws.write_row('C3', data)
ws.set_column('B:B',40)

for i in range(1,11):
   ws.write(i+4,0, 'style {}'.format(i))
   ws.add_sparkline(i+4,1,
   {'range':'Sheet1!$C$3:$L$3',
   'type':'column',
   'style':i})

wb.close()

Output

它将生成如下输出:

column sparkline