Python實(shí)現(xiàn)在Excel文件中寫(xiě)入圖表
學(xué)習(xí)完如何生成一個(gè) excel 文件之后,接下來(lái)我們繼續(xù)學(xué)習(xí)一下如何在 excel 文件中寫(xiě)入一個(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)容寫(xiě)入 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)容寫(xiě)入 "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)容寫(xiě)入到 "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)容寫(xiě)入 "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)容寫(xiě)入到 "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文件中寫(xiě)入圖表的詳細(xì)內(nèi)容,更多關(guān)于Python Excel寫(xiě)入圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
keras模型可視化,層可視化及kernel可視化實(shí)例
今天小編就為大家分享一篇keras模型可視化,層可視化及kernel可視化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
利用Python實(shí)現(xiàn)批量打包程序的工具
auto-py-to-exe與pyinstaller都無(wú)法直接一次性打包多個(gè)程序,想打包多個(gè)程序需要重新操作一遍。所以本文將用Python實(shí)現(xiàn)批量打包程序的工具,感興趣的可以了解一下2022-07-07
Python數(shù)據(jù)分析Numpy中常用相關(guān)性函數(shù)
這篇文章主要為大家介紹了Python數(shù)據(jù)分析Numpy中常用相關(guān)性函數(shù)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解
今天小編就為大家分享一篇關(guān)于Python使用Pickle模塊進(jìn)行數(shù)據(jù)保存和讀取的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
python3 使用openpyxl將mysql數(shù)據(jù)寫(xiě)入xlsx的操作
這篇文章主要介紹了python3 使用openpyxl將mysql數(shù)據(jù)寫(xiě)入xlsx的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05

