Python XlsxWriter - 迷你图


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

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

迷你图分为三种类型 -

  • line - 类似于折线图

  • - 类似于柱形图

  • 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 中,添加了迷你图。

迷你图

属性是 -

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

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

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

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

  • negative_points - 如果设置为 True,则迷你图中的负点将突出显示。

例子

以下程序生成带有标记的折线迷你图和突出显示负点的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 中的迷你迷你图有标记。K5 中的迷你图突出显示了负点。

线迷你图

示例 – 样式类型

以下代码在迷你图列中显示一系列数字。这里使用了十种不同的风格类型。

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

输出

它将产生以下输出 -

柱迷你图