Python XlsxWriter – 微线图
微线图 是一个小图表,它没有轴或坐标。它给出了某一参数的变化情况。普通的图表尺寸较大,有很多解释功能,如标题、图例、数据标签等,并与附带的文本分开。另一方面,Sparkline的尺寸较小,可以嵌入文本或有其背景的工作表单元中。
微线图的特点是由Edward Tufte在1983年提出的。微软在Excel 2010中引入了微线图。我们可以在Excel软件的插入功能区中找到微线图选项。
微线图有三种类型
- 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单元格中,增加了微线图。
这些属性是 −
- range – 是强制性参数。它指定了微线图所要绘制的单元格数据范围。
-
type – 指定微线图的类型。有3种可用的微线图类型,即行、列和胜负。
-
markers – 开启线型微线图的标记。
-
style – 在MS Excel中定义的微线图样式。有36种风格类型。
-
negative_points – 如果设置为 “True”,微线图中的负点会被突出显示。
例子
下面的程序产生一个带有 标记 的 直线微线图 和一个带有负数点的 胜负微线图 。
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中的微线图显示负数点突出。
例子 – 风格类型
以下代码在柱状微线图中显示一系列的数字。这里使用了10种不同的风格类型。
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!C3:L3',
'type':'column',
'style':i})
wb.close()
输出
它将产生以下输出 –