Python XlsxWriter 迷你图


A 迷你图 是一个小图表,没有轴或坐标。它给出了某个参数变化的表示。普通图表尺寸较大,具有许多说明性特征,如标题、图例、数据标签等,并从随附的文本中衬托出来。另一方面,迷你图尺寸较小,可以嵌入文本或具有其上下文的工作表单元格中。

Sparkline 的功能是由 Edward Tufte 在 1983 年引入的。Microsoft 在 Excel 2010 中引入了 Sparkline。我们可以在 Excel 软件的插入功能区中找到 sparkline 选项。

迷你图分为三种:

  • line : 类似于折线图

  • column : 类似于柱状图

  • win_loss :每个值是正(赢)还是负(输)。

使用 XlsxWriter 迷你图


XlsxWriter 模块有 add_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)
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()

在单元格 K 中,添加了迷你图。

Sparklines

属性为:

  • range :是必填参数。它指定迷你图将绘制的单元格数据范围。

  • type :指定迷你图的类型。有 3 种可用的迷你图类型是 line、column 和 win_loss。

  • markers : 打开线条样式迷你图的标记

  • style : MS Excel 中定义的迷你图样式。有 36 种样式类型。

  • 负分 :如果设置为True,迷你图中的负点会被高亮。

例子

下面的程序产生一个 线迷你图 with markers and a win_loss 迷你图 突出显示负面点。

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

K1 中的 Line Sparkline 有标记。 K5 中的迷你图显示负点突出显示。

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

它将产生以下输出:

Column Sparkline