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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM