• python中用xlsxwriter创建图表


    缺点:xlsxwriter不能对已存在的Excel进行编辑插入图标
     
    生成图标需要:
    1、先准备数据
    2、将数据插入到excel中
    3、根据插入的数据生成图表
    这里的生成excel主要分为准备多维数组类型的数据->数据插入到Excel中->对数据按系列划分生成报表 
     

    第二步:将数据插入Excel中

    首先要创建一个Excel文件,然后在Excel中创建一个sheet表单页,最后将数据插入到sheet表单页中
    1、创建一个Excel对象
    workbook = xlsxwriter.Workbook(“Excel名字.xlsx”)
     
    2、基于Excel对象创建一个sheet表单对象
    worksheet = workbook.add_worksheet(name=“sheet表单的名字,不填写就默认为sheet1")
     
    3、将数据写入sheet表单页worksheet
    worksheet.write_row( row, col, data, cell_format=None)
    worksheet.write_column(row, col, data, cell_format=None)
     
    可以用A1表示第一行第一列的那个单元格,这个时候后面的data可以是个数组,直接插入一行数据
    worksheet.write_row("A1", 一行数据, 样式(非必填项))
     
    cell_format为表单样式:例如加粗
    bold = workbook.add_format({'bold': 1})
     
    将数据插入表单的例子:
    复制代码
    for row in range(len(data)):  # 将数据插入excel中
        if row == 0:
            print(data[row])
            worksheet.write_row("A" + str(row+1), data[row], bold)
            worksheet.write_column()
        else:
            worksheet.write_row("A" + str(row+1), data[row])
    复制代码
     
    说明:data为第一步生成的多维数组数据,write_row这里是通过Excel的A1、A2....等方式标识单元格的

    第三步:生成图表 

    1、通过add_chart({’type’:’表格类型’})添加一个chart对象
    通过type定义图标的类型,比如是柱形图还是饼图
    The supported chart types are:
    • area: Creates an Area (filled line) style chart.
    • bar: Creates a Bar style (transposed histogram) chart.
    • column: Creates a column style (histogram) chart.
    • line: Creates a Line style chart.
    • pie: Creates a Pie style chart.
    • doughnut: Creates a Doughnut style chart.
    • scatter: Creates a Scatter style chart.
    • stock: Creates a Stock style chart.
    • radar: Creates a Radar style chart.
     
    2、添加图标要统计的数据,同一个报表可以添加多个系列
    # 第一种添加方式:[sheetname, A1(起始单元格标识), F1(结束单元格标识), last_col]
    chart.add_series({
        'categories': '=Sheet1!$A$1:$A$5',
        'values':     '=Sheet1!$B$1:$B$5',
        'line':       {'color': 'red’},
        'name':'=各端BUG数汇总_图表!$A$3'
    })
     
    # 第二种添加方式:[sheetname, first_row, first_col, last_row, last_col]
    复制代码
    chart.add_series({
        'categories': ['Sheet1', 0, 0, 4, 0],
        'values':     ['Sheet1', 0, 1, 4, 1],
        'line':       {'color': 'red'},
        'name':['Sheet1', 0, 0],
        'data_labels': {'value': True}
    })
    复制代码
     
    categories为图表下面的分组名称
    values:必填项,要统计的图标数据
    name:系列的名字
    data_labels:显示在图表上的数据标签
     
    一个图表可以添加多个系列,可以通过两种方式添加多个系列
    a、调用多次add_series()方法
    b、add_series()中categories和values多个值用元组记录
    chart.add_series({
        'categories': '=(Sheet1!$A$1:$A$9,Sheet1!$A$14:$A$25)',
        'values':     '=(Sheet1!$B$1:$B$9,Sheet1!$B$14:$B$25)',
    })
     
    3、给图表定义名字和样式
    chart.set_title({'name': ‘图标名字'})
    chart.set_style(10)
    chart.height=600
    chart.width=960
    height和width为生成的图标的宽高,默认宽高为480和288
     
    4、将图表插入到Excel中
    a:方法1
    worksheet.insert_chart('A7', chart)方法插入数据
     
    b:方法2
    chartsheet = workbook.add_chartsheet()
    chartsheet.set_chart(chart)
     
    下面是自己写的一个小函数:
    def drawing(type, data, categories, values, time_interval=20, end_row='5', end_column='5', line_color='red',
                filepath='default.xlsx',
                title='', x_axis='', y_axis=''):
        # 创建一个Excel对象
        workbook = xlsxwriter.Workbook(filepath)
        # 基于Excel对象创建一个sheet表单对象
        worksheet = workbook.add_worksheet()
        # Create a new Chart object.创建一个新的图表对象。
        chart = workbook.add_chart({'type': type})
        for i, line in enumerate(data):
            for j, col in enumerate(line):
                worksheet.write(i, j, col)
        # 设置表格标题
        chart.set_title({'name': title})
        chart.set_x_axis({'name': x_axis})
        chart.set_y_axis({'name': y_axis})
        chart.add_series({
            'marker': {'type': 'diamond'},
            'name': '=Sheet1!$A$1',  # name:系列的名字
            'categories': categories,  # categories为图表下面的分组名称
            'values': values,  # values:必填项,要统计的图标数据
            'data_labels': {'value': False},  # data_labels:显示在图表上的数据标签
            'line': {'color': line_color}
        })
        # 设置图标生成位置
        worksheet.insert_chart(5, 3, chart)
        workbook.close()
    
    
    drawing('line', test_data, categories, values, x_axis=x_axis, y_axis=y_axis)

    转载自:https://www.cnblogs.com/meitian/p/8320989.html

     
  • 相关阅读:
    微信小程序view标签以及display:flex的测试
    微信小程序简单入门理解
    spring+mybatis的简单配置示例
    反链与外链的区别汇总
    隐性URL与显性URL区别与SEO考虑
    你是如何为公司死心塌地卖命的?
    大三下学期十七周总结
    IP地址、子网掩码、网络号、主机号、网络地址、主机地址、IP段/数字
    大三下学期十六周总结
    图解高内聚与低耦合
  • 原文地址:https://www.cnblogs.com/sgfg-1314/p/10694711.html
Copyright © 2020-2023  润新知