分享

教你用Python自动读取数据生成图表,产生的效益很可观

 豆宝有虫吃 2019-06-22

厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图。试想下,以后只要有excel,就可以自动在excel里生成图表,如果有成千上万个excel,那这一切都自动化了,那产生的效益是很客观的。

Python机器人自动给Excel绘制带有数据表的图形

XlsxWriter是一个Python库,使用它可以对excel文件执行多个操作,如创建,编写,算术运算和绘制图形。

让我们看看如何使用实时数据绘制带有数据表的图表。

图表由至少一个系列的一个或多个数据点组成。要在Excel工作表上绘制图表,首先,创建特定图表类型的图表对象(即柱形图等)。创建图表对象后,在其中插入数据,最后,在图表对象中添加该图表对象。

代码#1:使用默认数据表绘制柱形图。要在Excel工作表上绘制此类图表,请使用set_table()图表对象的方法。

# import xlsxwriter module

import xlsxwriter

# Workbook() takes one, non-optional, argument

# which is the filename that we want to create.

workbook = xlsxwriter.Workbook('Ex_chart2.xlsx')

# The workbook object is then used to add new

# worksheet via the add_worksheet() method.

worksheet = workbook.add_worksheet()

# Create a new Format object to formats cells

# in worksheets using add_format() method .

# here we create italic format object

bold = workbook.add_format({'italic': 1})

# Add the worksheet data that the charts will refer to.

Data1 = ['Subject', 'Mid Term Score', 'End Term Score']

Data2 = [['Math', 'Physics', 'Biology', 'Hindi', 'English', 'Singing'],

[95, 78, 80, 80, 60, 65],

[90, 67, 78, 70, 63, 60]]

# Write a row of data starting from 'A1'

# with bold format .

worksheet.write_row('A1', Data1, bold)

# Write a column of data starting from

# 'A2', 'B2', 'C2' respectively .

worksheet.write_column('A2', Data2[0])

worksheet.write_column('B2', Data2[1])

worksheet.write_column('C2', Data2[2])

# set the wdith of B and C column

worksheet.set_column('B:C', 15)

# Create a chart object that can be added

# to a worksheet using add_chart() method.

# here we create a column chart object .

chart1 = workbook.add_chart({'type': 'column'})

# Add a data series to a chart

# using add_series method.

# Configure the first series.

# = Sheet1 !$A$1 is equivalent to ['Sheet1', 0, 0].

# note : spaces is not inserted in b/w

# = and Sheet1, Sheet1 and !

# if space is inserted it throws warning.

chart1.add_series({

'name': '= Sheet1 !$B$1',

'categories': '= Sheet1 !$A$2:$A$7',

'values': '= Sheet1 !$B$2:$B$7', })

# Configure a second series.

# Note use of alternative syntax to define ranges.

# [sheetname, first_row, first_col, last_row, last_col].

chart1.add_series({

'name': ['Sheet1', 0, 2],

'categories': ['Sheet1', 1, 0, 6, 0],

'values': ['Sheet1', 1, 2, 6, 2], })

# Add a chart title

chart1.set_title({'name': 'Exam Score distribution'})

# Add x-axis label

chart1.set_x_axis({'name': 'Subjects'})

# Add y-axis label

chart1.set_y_axis({'name': 'Marks'})

# set the style of the chart.

chart1.set_style(14)

# set the plot area layout of chart

chart1.set_plotarea({

'layout': {

'x': 0.15,

'y': 0.09,

'width': 0.63,

'height': 0.40, } })

# Set a data table on the X-Axis

# with the legend keys shown.

chart1.set_table()

# add chart to the worksheet with given

# offset values at the top-left corner of

# a chart is anchored to cell D2 .

worksheet.insert_chart('D2', chart1,

{'x_offset': 20, 'y_offset': 5})

# Finally, close the Excel file

# via the close() method.

workbook.close()

输出:

代码#2:绘制带有图例的默认数据表的柱形图。要在Excel工作表上绘制此类图表,请使用set_table()带有'show_keys'图表对象的关键字参数的方法。

# import xlsxwriter module

import xlsxwriter

# Workbook() takes one, non-optional, argument

# which is the filename that we want to create.

workbook = xlsxwriter.Workbook('Ex_chart1.xlsx')

# The workbook object is then used to add new

# worksheet via the add_worksheet() method.

worksheet = workbook.add_worksheet()

# Create a new Format object to formats cells

# in worksheets using add_format() method .

# here we create italic format object

bold = workbook.add_format({'italic': 1})

# Add the worksheet data that the charts will refer to.

Data1 = ['Subject', 'Mid Term Score', 'End Term Score']

Data2 = [ ['Math', 'Physics', 'Biology', 'Hindi', 'English', 'Singing'],

[95, 78, 80, 80, 60, 65],

[90, 67, 78, 70, 63, 60] ]

# Write a row of data starting from 'A1'

# with bold format .

worksheet.write_row('A1', Data1, bold)

# Write a column of data starting from

# 'A2', 'B2', 'C2' respectively .

worksheet.write_column('A2', Data2[0])

worksheet.write_column('B2', Data2[1])

worksheet.write_column('C2', Data2[2])

# set the wdith of B and C column

worksheet.set_column('B:C', 15)

# Create a chart object that can be added

# to a worksheet using add_chart() method.

# here we create a column chart object .

chart2 = workbook.add_chart({'type': 'column'})

# Add a data series to a chart

# using add_series method.

# Configure the first series.

# = Sheet1 !$A$1 is equivalent

# to ['Sheet1', 0, 0].

# note : spaces is not inserted in b / w

# = and Sheet1, Sheet1 and !

# if space is inserted it throws warning.

chart2.add_series({

'name': '= Sheet1 !$B$1',

'categories': '= Sheet1 !$A$2:$A$7',

'values': '= Sheet1 !$B$2:$B$7', })

# Configure a second series.

# Note use of alternative syntax to define ranges.

# [sheetname, first_row, first_col, last_row, last_col].

chart2.add_series({

'name': ['Sheet1', 0, 2],

'categories': ['Sheet1', 1, 0, 6, 0],

'values': ['Sheet1', 1, 2, 6, 2], })

# Add a chart title

chart2.set_title({'name': 'Exam Score distribution'})

# Add x-axis label

chart2.set_x_axis({'name': 'Subjects'})

# Add y-axis label

chart2.set_y_axis({'name': 'Marks'})

# Set a data table on the X-Axis with the legend keys shown.

chart2.set_table({'show_keys': True})

# hide the chart legends.

chart2.set_legend({'position': 'none'})

# add chart to the worksheet with given

# offset values at the top-left corner of

# a chart is anchored to cell D2 .

worksheet.insert_chart('D2', chart2,

{'x_offset': 20, 'y_offset': 5})

# Finally, close the Excel file

# via the close() method.

workbook.close()

输出:

内容来自腾讯新闻

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多