图表至少由一系列一个或多个数据点组成。系列本身由对单元格范围的引用组成。为了在Excel工作表上绘制图表,首先,创建特定图表类型的图表对象(即柱形图等)。创建图表对象后,在其中插入数据,最后,将该图表对象添加到图纸对象中。
示例#importxlsxwritermodule
importxlsxwriter
#Workbook()takesone,non-optional,argumentwhichisthefilename
#thatwewanttocreate.
workbook=xlsxwriter.Workbook('chart_pattern.xlsx')
#Theworkbookobjectisthenusedtoaddnewworksheetviathe#add_worksheet()method.
worksheet=workbook.add_worksheet()
#CreateanewFormatobjecttoformatscellsinworksheetsusing#add_format()method.
#herewecreateboldformatobject.
bold=workbook.add_format({'bold':1})
#Addtheworksheetdatathatthechartswillreferto.
headings=['Shingle','Brick']
data=[
[105,150,130,90],
[50,120,100,110],
]
#Writearowofdatastartingfrom'A1'withboldformat.
worksheet.write_row('A1',headings,bold)
#Writeacolumnofdatastartingfrom'A2','B2'respectively.
worksheet.write_column('A2',data[0])
worksheet.write_column('B2',data[1])
#Createachartobjectthatcanbeaddedtoaworksheetusing#add_chart()method.
#herewecreateacolumnchartobject
chart=workbook.add_chart({'type':'column'})
#Addadataserieswithpatterntoachartusingadd_seriesmethod.#Thegapisusedtomakethepatternsmorevisible.
#Configurethefirstseries.=Sheet1!$A$1isequivalentto['Sheet1',0,0].
#note:spacesisnotinsertedinb/w=andSheet1,Sheet1and!
#ifspaceisinserteditthrowswarning.
chart.add_series({
'name':'=Sheet1!$A$1',
'values':'=Sheet1!$A$2:$A$5',
'pattern':{
'pattern':'shingle',
'fg_color':'#804000',
'bg_color':'#c68c53'
},
'border':{'color':'#804000'},
'gap':70,
})
#Configureasecondseries.
chart.add_series({
'name':'=Sheet1!$B$1',
'values':'=Sheet1!$B$2:$B$5',
'pattern':{
'pattern':'horizontal_brick',
'fg_color':'#b30000',
'bg_color':'#ff6666'
},
'border':{'color':'#b30000'},
})
#Addacharttitle
chart.set_title({'name':'Claddingtypes'})
#Addx-axislabel
chart.set_x_axis({'name':'Region'})
#Addy-axislabel
chart.set_y_axis({'name':'Numberofhouses'})
#addcharttotheworksheetwithgivenoffsetvaluesatthetop-#leftcornerofachartisanchoredtocellD2.
worksheet.insert_chart('D2',chart,{'x_offset':25,'y_offset':10})
#Finally,closetheExcelfileviatheclose()method.
workbook.close()