失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python写入excel表格数据绘制图表_(原创)xlsxwriter python excel 写入数据\图表

python写入excel表格数据绘制图表_(原创)xlsxwriter python excel 写入数据\图表

时间:2024-03-18 17:27:18

相关推荐

python写入excel表格数据绘制图表_(原创)xlsxwriter python excel 写入数据\图表

前面分享了使用xlsxwriter创建excel和写入数据GUC:(原创)xlsxwriter,python excel 写入数据\图表等操作_创建、写入(一)​

xlsxwrite除了常规数据操作,还可以灵活,精细的操作图表,这也为吸引我要分享的原因之一,对于固定格式报表可以自动输出,大大提升日常的办公效率

先用上一篇文章的方法写入数据

import xlsxwriter

wb = xlsxwriter.Workbook("e:\\xlsxwriter\\filename.xlsx")

ws = wb.add_worksheet("案例")

# 数据

data = [

('地区','1月销售量','2月销售量'),

('广州',52641,45641,),

('上海',65444,54584,),

('北京',57485,65484,),

('深圳',42314,85214,)

]

#字段格式

header = {

'bold' : True, #粗体

'font_name' : '微软雅黑',

'font_size' : 10,

'border' : True, #边框线

'align' : 'center', #水平居中

'valign' : 'vcenter', #垂直居中

'bg_color' : '#66DD00' #背景颜色

}

text = {

'font_name' : '微软雅黑',

'font_size' : 9,

'border' : True,

'align' : 'left', #左对齐

'valign' : 'vcenter'

}

headerpm = wb.add_format(header)

textpm = wb.add_format(text)

ws.set_column('C:C',13) #C列宽度

for row,rowdata in enumerate(data):

for col,coldata in enumerate(rowdata):

if row==0:

ws.write(row,col,coldata,headerpm)

else:

ws.write(row, col, coldata, textpm)

wb.close()

结果数据如下:

使用Workbook的add_chart()方法创建图表对象,以字典表的方式传入参数

chart = workbook.add_chart({'type': 'column'}) #创建一个柱状图

type表示要创建的图表类型,值及对应类型如下:area:面积图

bar:条形图

column:柱状图

line:折线图

pie:饼图

doughnut:圆环图

scatter:散点图

stock:股价图

radar:雷达图

使用add.series()数据系列添加的图表,以字典表的方式传入参数

data1 = {

'name': '案例!$B$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$B$2:$B4'

}name:该数据系列的名称 ,可以填写引用单元格值,也可以直接填写值

categories:图表类别标签

values:该数据系列的值

values选项为必须,其他选项为可选

categories、values可以使用单元格的名称,也可以使用行/列索引表示,即[所在的sheet名, 首行索引, 首列索引, 尾行索引,尾列索引 ]

以下表示同上

data1 = {

'name': '1月销售量',

'categories' : ['案例',1,0,4,0],

'values' : ['案例',1,1,4,1]

}

图表中增加数据系列

chart.add_series(data1)

使用Worksheet的insert_chart()方法插入工作表中,需指定起始位置

ws.insert_chart('B8',chart) #在B10单位格位置插入图表

结果如下

再插入2月销售量数据系列

data1 = {

'name': '案例!$B$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$B$2:$B4'

}

data2 = {

'name': '案例!$C$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$C$2:$C4'

}

chart.add_series(data1)

chart.add_series(data2)

ws.insert_chart('B8',chart)

结果如下

再美化一下表格

'overlap' : -20

overlap:两个数据系列之间重叠的距离,范围+/-100,默认值为0,适用于条形图/柱状图

如下图红框的距离

'gap' : 100

gap:在条形图/柱形图中数据系列之间的间隔。范围是0-500。默认值是150

如下图红框的距离

'data_labels' : {'value':True,'font':{'name':'微软雅黑','size':9}}

添加数据标签,并设置数据标签的字体为微软雅黑,大小为9

如下图红框部分

设置X轴参数,斜体,大小10,加粗

chart.set_x_axis(

{

'num_font': {'italic': True,'size':11,'bold':True,}

}

)

结果见下图

设置Y轴参数,去除Y轴及背景网格线

chart.set_y_axis(

{

'major_gridlines':{'visible':False}, #去除Y轴背景网格线

'visible':None #去除Y轴

}

)

结果如下图

设置图表标题

chart.set_title(

{

'name':'1-2月销售量',

'name_font': {'name': '微软雅黑'}

}

)

结果如下图

设置图表大小,宽620,高350

chart.set_size({'width':620,'height':350})

结果如下图

sheet完整如下图

去掉图表边框

chart.set_chartarea({'border':{'none':True}})

结果如下图

隐藏工作表网格线

ws.hide_gridlines(2)

#参数0,不隐藏

#参数1,仅隐藏打印的网格线

#参数2,隐藏屏幕和打印的网格线

结果如下图

最后附上完整代码

import xlsxwriter

wb = xlsxwriter.Workbook("e:\\xlsxwriter\\filename.xlsx")

ws = wb.add_worksheet("案例")

# 数据

data = [

('地区','1月销售量','2月销售量'),

('广州',52641,45641,),

('上海',65444,54584,),

('北京',57485,65484,),

('深圳',42314,85214,)

]

#字段格式

header = {

'bold' : True, #粗体

'font_name' : '微软雅黑',

'font_size' : 10,

'border' : True, #边框线

'align' : 'center', #水平居中

'valign' : 'vcenter', #垂直居中

'bg_color' : '#66DD00' #背景颜色

}

text = {

'font_name' : '微软雅黑',

'font_size' : 9,

'border' : True,

'align' : 'left', #左对齐

'valign' : 'vcenter'

}

headerpm = wb.add_format(header)

textpm = wb.add_format(text)

ws.set_column('C:C',13) #C列宽度

for row,rowdata in enumerate(data):

for col,coldata in enumerate(rowdata):

if row==0:

ws.write(row,col,coldata,headerpm)

else:

ws.write(row, col, coldata, textpm)

chart = wb.add_chart({'type': 'column'})

data1 = {

'name': '案例!$B$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$B$2:$B4',

'overlap' : -20,

'gap' : 100,

'data_labels' : {'value':True,'font':{'name':'微软雅黑','size':9}}

}

data2 = {

'name': '案例!$C$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$C$2:$C4',

'data_labels': {'value': True, 'font': {'name': '微软雅黑', 'size': 9}}

}

chart.set_x_axis(

{

'num_font': {'italic': True,'size':11,'bold':True,}

}

)

chart.set_y_axis(

{

'major_gridlines':{'visible':False},

'visible':None

}

)

chart.set_title(

{

'name':'1-2月销售量',

'name_font': {'name': '微软雅黑'}

}

)

chart.set_size({'width':620,'height':350})

chart.set_chartarea({'border':{'none':True}})

ws.hide_gridlines(2)

chart.add_series(data1)

chart.add_series(data2)

ws.insert_chart('B8',chart)

wb.close()

python写入excel表格数据绘制图表_(原创)xlsxwriter python excel 写入数据\图表等操作_图表操作(二)...

如果觉得《python写入excel表格数据绘制图表_(原创)xlsxwriter python excel 写入数据\图表》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。