XlsxWriter 迷你图使用指南

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

_images/sparklines1.png

迷你图由 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})
_images/sparklines2.png

样式编号从样式网格左上角开始,按从左到右的顺序排列。默认样式为 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 文档维护者。本文为中文翻译,代码及命令保留原文。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容