迷你图(Sparkline)是 Excel 2010 及更新版本的一项功能,可以在工作表单元格中添加小型图表,以紧凑形式展示数据趋势。

迷你图由 Edward Tufte 提出,相关背景见 Sparkline。
add_sparkline() 方法
工作表的 add_sparkline() 方法可将迷你图添加到一个或一组单元格:
worksheet.add_sparkline(0, 5, {'range': 'Sheet1!A1:E1'})
支持行列坐标与 A1 两种表示法,详情见单元格表示法。
add_sparkline() 的配置参数必须以字典传入。主要参数包括:range(必填)、type、style、markers、negative_points、axis、reverse。
其他较少使用的参数包括:location、high_point、low_point、first_point、last_point、max、min、empty_cells、show_hidden、date_axis、weight、series_color、negative_color、markers_color、first_color、last_color、high_color、low_color。下面逐一介绍。
注意:迷你图仅在 Excel 2010 及更新版本中可见。可以将其写入 Excel 2007 能读取的 XLSX 文件,但 Excel 2007 不会显示迷你图。
range
range 是唯一不可省略的参数,指定迷你图绘制的数据范围:
worksheet.add_sparkline('F1', {'range': 'A1:E1'})
范围应当是二维数组。三维单元格数组的用法,见后面的“分组迷你图”。
如果数据不在同一工作表,可以使用通常的 Excel 表示法指定位置:
worksheet.add_sparkline('F1', {'range': 'Sheet2!A1:E1'})
如果工作表名称包含空格或特殊字符,应像 Excel 一样用引号包围名称:
worksheet.add_sparkline('F1', {'range': "'Monthly Data'!A1:E1"})
type
指定迷你图类型。有三种可用类型:line(折线,默认)、column(柱形)、win_loss(盈亏)。
line (default)
column
win_loss
例如:
worksheet.add_sparkline('F2', {'range': 'A2:E2',
'type': 'column'})
style
Excel 提供 36 种内置迷你图样式,分为 6 组,每组 6 种。style 用于选择对应样式,取值为 1 到 36:
worksheet.add_sparkline('F2', {'range': 'A2:E2',
'type': 'column',
'style': 12})

样式编号从样式网格左上角开始,按从左到右的顺序排列。默认样式为 1。还可以使用后面介绍的 _color 参数覆盖迷你图的颜色元素。
markers
为折线迷你图开启数据标记:
worksheet.add_sparkline('A6', {'range': 'Sheet2!A1:J1',
'markers': True})
Excel 不会为柱形和盈亏迷你图显示此类标记。
negative_points
突出显示迷你图范围中的负值。盈亏迷你图通常需要这个设置:
worksheet.add_sparkline('A9', {'range': 'Sheet2!A1:J1',
'negative_points': True})
axis
在迷你图中显示水平轴:
worksheet.add_sparkline('A10', {'range': 'Sheet2!A1:J1',
'axis': True})
reverse
改为从右向左绘制数据,而非默认的从左向右:
worksheet.add_sparkline('A24', {'range': 'Sheet2!A4:J4',
'type': 'column',
'style': 20,
'reverse': True})
weight
调整折线迷你图的默认线宽:
worksheet.add_sparkline('F2', {'range': 'A2:E2',
'weight': 0.25})
weight 必须是 Excel 允许的以下值之一:
0.25, 0.5, 0.75, 1, 1.25, 2.25, 3, 4.25, 6
high_point、low_point、first_point、last_point
突出显示迷你图范围中的最高点、最低点、首点或末点:
worksheet.add_sparkline('A7', {'range': 'Sheet2!A1:J1',
'high_point': True,
'low_point': True,
'first_point': True})
max、min
指定纵轴最大值与最小值:
worksheet.add_sparkline('F1', {'range': 'A1:E1',
'max': 0.5,
'min': -0.5})
还可以将最大值和最小值应用到一组迷你图,而不是单个图。例如:
'max': 'group'
具体见“分组迷你图”。
empty_cells
定义如何处理空单元格:
worksheet.add_sparkline('F1', {'range': 'A1:E1',
'empty_cells': 'zero'})
可选值:
gaps:将空单元格显示为间隔,默认值。zero:将空单元格绘制为 0。connect:用线连接相邻点,仅适用于line类型。
show_hidden
绘制隐藏行列中的数据:
worksheet.add_sparkline('F3', {'range': 'A3:E3',
'show_hidden': True})
此选项默认关闭。
date_axis
为迷你图指定另一组日期轴数据。绘制的数据并非等间隔时,这个设置很有用:
worksheet.add_sparkline('F3', {'range': 'A3:E3',
'date_axis': 'A4:E4'})
日期范围的单元格数量,应与数据范围的单元格数量对应。
series_color
可以使用以下参数覆盖迷你图样式中的颜色:
series_color
negative_color
markers_color
first_color
last_color
high_color
low_color
颜色应以 HTML 风格的十六进制 #rrggbb 值指定:
worksheet.add_sparkline('A18', {'range': 'Sheet2!A2:J2',
'type': 'column',
'series_color': '#E965E0'})
location
默认由 add_sparkline() 的行列参数指定迷你图位置。但分组迷你图需要指定多个单元格位置,location 参数用于传入单元格列表。见下一节。
分组迷你图
可以多次调用 add_sparkline(),在工作表中写入任意数量的迷你图。
有时需要把相邻迷你图分为一组,使对其中一个图的修改应用到整组。在 Excel 中,可以通过选择三维数据范围和二维位置范围实现。
在 XlsxWriter 中,可以向 location 与 range 分别传入引用数组,模拟这一效果:
worksheet.add_sparkline('A27', {'location': ['A27', 'A28', 'A29'],
'range': ['A5:J5', 'A6:J6', 'A7:J7']})
迷你图示例
原文:Working with Sparklines。作者/维护方:XlsxWriter 文档维护者。本文为中文翻译,代码及命令保留原文。











暂无评论内容