利用Python實(shí)現(xiàn)自動(dòng)生成圖文并茂的數(shù)據(jù)分析
前言
reportlab是Python的一個(gè)標(biāo)準(zhǔn)庫(kù),可以畫(huà)圖、畫(huà)表格、編輯文字,最后可以輸出PDF格式。它的邏輯和編輯一個(gè)word文檔或者PPT很像。有兩種方法:
- 建立一個(gè)空白文檔,然后在上面寫(xiě)文字、畫(huà)圖等;
- 建立一個(gè)空白list,以填充表格的形式插入各種文本框、圖片等,最后生成PDF文檔。
因?yàn)樾枰a(chǎn)生一份給用戶看的報(bào)告,里面需要插入圖片、表格等,所以采用的是第二種方法。
1、一行命令,安裝這個(gè)庫(kù)
reportlab輸入Python的第三方庫(kù),使用前需要先安裝,
為了方便大家使用,我已經(jīng)將這個(gè)庫(kù)集成到Python自動(dòng)化辦公的專用庫(kù):pip install python-office
中了,
因此一行命令就可以完成的安裝命令如下??
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-office -U
2、核心代碼模塊導(dǎo)入
①提前導(dǎo)入相關(guān)內(nèi)容,并且注冊(cè)字體
(注冊(cè)字體前需要先準(zhǔn)備好字體文件)
from reportlab.pdfbase import pdfmetrics # 注冊(cè)字體 from reportlab.pdfbase.ttfonts import TTFont # 字體類 from reportlab.platypus import Table, SimpleDocTemplate, Paragraph, Image # 報(bào)告內(nèi)容相關(guān)類 from reportlab.lib.pagesizes import letter # 頁(yè)面的標(biāo)志尺寸(8.5*inch, 11*inch) from reportlab.lib.styles import getSampleStyleSheet # 文本樣式 from reportlab.lib import colors # 顏色模塊 from reportlab.graphics.charts.barcharts import VerticalBarChart # 圖表類 from reportlab.graphics.charts.legends import Legend # 圖例類 from reportlab.graphics.shapes import Drawing # 繪圖工具 from reportlab.lib.units import cm # 單位:cm
②注冊(cè)字體
提前準(zhǔn)備好字體文件, 如果同一個(gè)文件需要多種字體可以注冊(cè)多個(gè)
pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf')) 封裝不同內(nèi)容對(duì)應(yīng)的函數(shù) 創(chuàng)建一個(gè)Graphs類,通過(guò)不同的靜態(tài)方法提供不同的報(bào)告內(nèi)容,包括:標(biāo)題、普通段落、圖片、表格和圖表。函數(shù)中的相關(guān)數(shù)據(jù)目前絕大多數(shù)都是固定值,可以根據(jù)情況自行設(shè)置成相關(guān)參數(shù)。 # Graphs類的全部代碼,請(qǐng)+v:CoderWanFeng
③生成報(bào)告
if __name__ == '__main__': # 創(chuàng)建內(nèi)容對(duì)應(yīng)的空列表 content = list() # 添加標(biāo)題 content.append(Graphs.draw_title('數(shù)據(jù)分析就業(yè)薪資')) # 添加圖片 content.append(Graphs.draw_img('資料全集.jpg')) # 添加段落文字 content.append(Graphs.draw_text('眾所周知,大數(shù)據(jù)分析師崗位是香餑餑,近幾年數(shù)據(jù)分析熱席卷了整個(gè)互聯(lián)網(wǎng)行業(yè),與數(shù)據(jù)分析的相關(guān)的崗位招聘、培訓(xùn)數(shù)不勝數(shù)。很多人前赴后繼,想要參與到這波紅利當(dāng)中。那么數(shù)據(jù)分析師就業(yè)前景到底怎么樣呢?需要學(xué)習(xí)Python + 大數(shù)據(jù)分析,可以添加我:CoderWanFeng')) # 添加小標(biāo)題 content.append(Graphs.draw_title('')) content.append(Graphs.draw_little_title('全網(wǎng)同名:程序員晚?xiàng)?)) # 添加表格 data = [ ('平臺(tái)名稱', '關(guān)注人數(shù)', '較上年增長(zhǎng)率'), ('公眾號(hào)', '18.5K', '25%'), ('B站', '25.5K', '14%'), ('微博', '29.3K', '10%') ] content.append(Graphs.draw_table(*data)) # 生成圖表 content.append(Graphs.draw_title('')) content.append(Graphs.draw_little_title('熱門城市的就業(yè)情況')) b_data = [(25400, 12900, 20100, 20300, 20300, 17400), (15800, 9700, 12982, 9283, 13900, 7623)] ax_data = ['BeiJing', 'ChengDu', 'ShenZhen', 'ShangHai', 'HangZhou', 'NanJing'] leg_items = [(colors.red, '平均薪資'), (colors.green, '招聘量')] content.append(Graphs.draw_bar(b_data, ax_data, leg_items)) # 生成pdf文件 doc = SimpleDocTemplate('report.pdf', pagesize=letter) doc.build(content)
生成報(bào)告的結(jié)果如下:
到此這篇關(guān)于利用Python實(shí)現(xiàn)自動(dòng)生成圖文并茂的數(shù)據(jù)分析的文章就介紹到這了,更多相關(guān)Python自動(dòng)生成圖文內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
妙用itchat! python實(shí)現(xiàn)久坐提醒功能
python編寫(xiě)的久坐提醒,給最愛(ài)的那個(gè)她,這篇文章主要為大家分享了python久坐提醒功能的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11python實(shí)現(xiàn)在windows服務(wù)中新建進(jìn)程的方法
這篇文章主要介紹了python實(shí)現(xiàn)在windows服務(wù)中新建進(jìn)程的方法,涉及Python針對(duì)Windows服務(wù)與進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程
這篇文章主要介紹了使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程,wxPython是一個(gè)非常受歡迎的Python圖形庫(kù),需要的朋友可以參考下2015-05-05Python從單元素字典中獲取key和value的實(shí)例
今天小編就為大家分享一篇Python從單元素字典中獲取key和value的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12PyQt5下拉式復(fù)選框QComboCheckBox的實(shí)例
今天小編就為大家分享一篇PyQt5下拉式復(fù)選框QComboCheckBox的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06解決python3插入mysql時(shí)內(nèi)容帶有引號(hào)的問(wèn)題
今天小編就為大家分享一篇解決python3插入mysql時(shí)內(nèi)容帶有引號(hào)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03