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