Python實現(xiàn)在Excel文件中寫入圖表
學(xué)習(xí)完如何生成一個 excel 文件之后,接下來我們繼續(xù)學(xué)習(xí)一下如何在 excel 文件中寫入一個比較簡單的圖表,先來看一下所需要的幾個函數(shù)(這些函數(shù)都是通過工作簿執(zhí)行出來的)。
函數(shù)名 | 說明 | 參數(shù) |
---|---|---|
add_chart() | 創(chuàng)建圖表對象 | {type:樣式} |
add_series() | 定義需要展示的數(shù)據(jù) | 字典 |
set_title() | 定義圖表title | 字符串 |
add_series 參數(shù)
參數(shù) | 說明 | 值 |
---|---|---|
categories | 展示的標(biāo)題 | =Sheet1!$A$1:$A$4 Shert1:工作簿名稱 $A1 : 1:1:A$4 表示從第A行的第一個值到第四個值去展示標(biāo)題 |
values | 展示的數(shù)據(jù) | =Sheet1!$B1 : 1:1:B$4 Shert1:工作簿名稱 $B1 : 1:1:B$4 表示從第A行的第一個值到第四個值去展示標(biāo)題 |
name | 表名 |
$A$1:$A$4 表示從第A行的第一個值到第四個值去展示標(biāo)題
圖表的樣式
樣式名 | 說明 |
---|---|
area | 區(qū)域樣式表 |
bar | 條形樣式表 |
column | 柱狀樣式表 |
line | 線條樣式表 |
pie | 餅圖樣式表 |
doughnut | 圓環(huán)樣式表 |
scatter | 散點樣式表 |
stock | 庫存樣式表 |
rader | 雷達(dá)樣式表 |
結(jié)合 study.xlsx 文件 將學(xué)生成績以表圖形式展示
這里繼續(xù)使用上一章節(jié)的 “將項目中的 study.xlsx 文件的內(nèi)容寫入 write.xlsx” 的案例;
代碼示例如下:
# coding:utf-8 import xlsxwriter import xlrd # excel = xlsxwriter.Workbook('write.xlsx') # 初始化 excel 對象 # book = excel.add_worksheet('study') # 添加工作簿 # # title = ['姓名', '性別', '年齡', '成績', '等級'] # 定義 write.xlsx 的首行內(nèi)容 # # for index, data in enumerate(title): # for循環(huán) 利用枚舉函數(shù)將 title 的內(nèi)容寫入 "write.xlsx" 的首行 # book.write(0, index, data) # excel.close() def read(): # 定義一個 read 函數(shù)讀取 "study.xlsx" 文件 result = [] excel = xlrd.open_workbook('study.xlsx') book = excel.sheet_by_name('學(xué)生手冊') for i in book.get_rows(): content = [] for j in i: content.append(j.value) result.append(content) return result def write(content): # 定義一個 write 函數(shù) 將讀取到 "study.xlsx" 的內(nèi)容寫入到 "write.xlsx" 文件 excel = xlsxwriter.Workbook('write.xlsx') book = excel.add_worksheet('study') for index, data in enumerate(content): print(data) for sub_index, sub_data in enumerate(data): # print(sub_index, sub_data) book.write(index, sub_index, sub_data) book1 = excel.add_worksheet('學(xué)生等級') # 定義 "學(xué)生等級" 工作簿 data = [ # 定義 data 列表 用以存放學(xué)生成績所處等級與數(shù)量 ['優(yōu)秀', '良好', '中', '差'], [15, 25, 55, 5] ] book1.write_column('A1', data[0]) # write_column() 函數(shù),按行添加(即 A1 行添加 data 列表的 0 索引的內(nèi)容) book1.write_column('B1', data[1]) chart = excel.add_chart({'type': 'column'}) # 定義圖表樣式為 柱狀樣式表 chart.add_series({ # 添加需要展示的數(shù)據(jù) 'categories': '=學(xué)生等級!$A1:$A4', 'values': '=學(xué)生等級!$B1:$B4', 'name': '成績占比' }) chart.set_title({'name': '成績占比圖表'}) # 定義圖表title book1.insert_chart('A10', chart) # 將 chart 放在 excel 表格對應(yīng)工作簿的 A10 位置 excel.close() if __name__ == '__main__': result = read() write(result)
運行結(jié)果如下:
拓展:再試試餅狀圖與條形樣式圖
代碼示例如下:
# coding:utf-8 import xlsxwriter import xlrd # excel = xlsxwriter.Workbook('write.xlsx') # 初始化 excel 對象 # book = excel.add_worksheet('study') # 添加工作簿 # # title = ['姓名', '性別', '年齡', '成績', '等級'] # 定義 write.xlsx 的首行內(nèi)容 # # for index, data in enumerate(title): # for循環(huán) 利用枚舉函數(shù)將 title 的內(nèi)容寫入 "write.xlsx" 的首行 # book.write(0, index, data) # excel.close() def read(): # 定義一個 read 函數(shù)讀取 "study.xlsx" 文件 result = [] excel = xlrd.open_workbook('study.xlsx') book = excel.sheet_by_name('學(xué)生手冊') for i in book.get_rows(): content = [] for j in i: content.append(j.value) result.append(content) return result def write(content): # 定義一個 write 函數(shù) 將讀取到 "study.xlsx" 的內(nèi)容寫入到 "write.xlsx" 文件 excel = xlsxwriter.Workbook('write.xlsx') book = excel.add_worksheet('study') for index, data in enumerate(content): print(data) for sub_index, sub_data in enumerate(data): # print(sub_index, sub_data) book.write(index, sub_index, sub_data) book1 = excel.add_worksheet('學(xué)生等級') # 定義 "學(xué)生等級" 工作簿 data = [ # 定義 data 列表 用以存放學(xué)生成績所處等級與數(shù)量 ['優(yōu)秀', '良好', '中', '差'], [15, 25, 55, 5] ] book1.write_column('A1', data[0]) # write_column() 函數(shù),按行添加(即 A1 行添加 data 列表的 0 索引的內(nèi)容) book1.write_column('B1', data[1]) chart = excel.add_chart({'type': 'column'}) # 定義圖表樣式為 柱狀樣式表 chart.add_series({ # 添加需要展示的數(shù)據(jù) 'categories': '=學(xué)生等級!$A1:$A4', 'values': '=學(xué)生等級!$B1:$B4', 'name': '成績占比' }) chart.set_title({'name': '成績占比圖表'}) # 定義圖表title book1.insert_chart('A10', chart) # 將 chart 放在 excel 表格對應(yīng)工作簿的 A10 位置 chart = excel.add_chart({'type': 'bar'}) chart.add_series({ 'categories': '=學(xué)生等級!$A1:$A4', 'values': '=學(xué)生等級!$B1:$B4', 'name': '成績占比' }) chart.set_title({'name': '成績占比圖表'}) book1.insert_chart('A25', chart) chart = excel.add_chart({'type': 'pie'}) chart.add_series({ 'categories': '=學(xué)生等級!$A1:$A4', 'values': '=學(xué)生等級!$B1:$B4', 'name': '成績占比' }) chart.set_title({'name': '成績占比圖表'}) book1.insert_chart('A40', chart) excel.close() if __name__ == '__main__': result = read() write(result)
運行結(jié)果如下:
以上就是Python實現(xiàn)在Excel文件中寫入圖表的詳細(xì)內(nèi)容,更多關(guān)于Python Excel寫入圖表的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python的Django框架中使用SQLAlchemy操作數(shù)據(jù)庫的教程
SQLAlchemy是Python一個專門的數(shù)據(jù)庫管理工具,如果對Django ORM覺得有些生疏的話完全可以結(jié)合SQLAlchemy,這里我們就來總結(jié)一下Python的Django框架中使用SQLAlchemy操作數(shù)據(jù)庫的教程2016-06-06玩轉(zhuǎn)Python發(fā)短信的實現(xiàn)
用Python實現(xiàn)發(fā)短信功能,當(dāng)監(jiān)控到問題出現(xiàn)時,短信報警,使問題能得到及時的處理。當(dāng)然,我相信,用Python發(fā)短信應(yīng)用場景不止此一處,下面我們開始Python發(fā)短信的實現(xiàn),感興趣的朋友參考下吧2022-01-01PyQt5中QSpinBox計數(shù)器的實現(xiàn)
這篇文章主要介紹了PyQt5中QSpinBox計數(shù)器的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01基于Python+Flask實現(xiàn)一個簡易網(wǎng)頁驗證碼登錄系統(tǒng)案例
當(dāng)今的互聯(lián)網(wǎng)世界中,為了防止惡意訪問,許多網(wǎng)站在登錄和注冊表單中都采用了驗證碼技術(shù),驗證碼可以防止機器人自動提交表單,確保提交行為背后有一個真實的人類用戶,本文將向您展示如何使用Python的Flask框架來創(chuàng)建一個簡單的驗證碼登錄系統(tǒng)2023-09-09