国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

用 Python 將 matplotlib 圖表集成到 PDF 中

開發 后端
在本指南中,我們將使用 borb —— 一個專門用于閱讀、操作和生成 PDF 文檔的 Python 庫。

Python中文社區(ID:python-china) 

介紹

PDF 格式是與平臺無關,它獨立于底層操作系統和渲染引擎。事實上,PDF 是基于一種腳本語言——PostScript,它是第一個獨立于設備的頁面描述語言。

在本指南中,我們將使用 borb —— 一個專門用于閱讀、操作和生成 PDF 文檔的 Python 庫。它提供了一個低級模型(允許您訪問精確的坐標和布局)和一個高級模型(您可以將邊距、位置等精確計算委托給布局管理器) .

matplotlib 是一個數據可視化庫,也是許多其他流行庫(如 Seaborn)背后的引擎。

基于用于創建報告(通常包括圖形)的常見 PDF 文檔,我們將看看如何使用 borb 將 Matplotlib 圖表集成到 PDF 文檔中。

安裝 borb和 matplotlib

borb 可以從 GitHub 上的源代碼下載,或通過 pip 安裝:

  1. $ pip install borb 

matplotlib 也可以通過 pip 安裝: 

  1. $ pip install matplotlib

用 Borb 在 PDF 文檔中集成 Matplotlib 圖表

在創建餅圖等圖表之前,我們將編寫一個小的效用函數,該函數生成 N 種顏色,均勻分布在顏色光譜中。

每當我們需要創建繪圖并為每個部分著色時,這將對我們有所幫助: 

  1. from borb.pdf.canvas.color.color import HSVColor, HexColor  
  2. from decimal import Decimal  
  3. import typing  
  4. def create_n_colors(n: int) -> typing.List[str]:  
  5.   # The base color is borb-blue  
  6.   base_hsv_color: HSVColorHSVColor = HSVColor.from_rgb(HexColor("56cbf9"))  
  7.   # This array comprehension creates n HSVColor objects, transforms then to RGB, and then returns their hex string  
  8.   return [HSVColor(base_hsv_color.hue + Decimal(x / 360), Decimal(1), Decimal(1)).to_rgb().to_hex_string() for x in range(0, 360, int(360/n))] 

HSL 和 HSV/HSB 是由計算機圖形學研究人員在 1970 年代設計的,目的是更接近人類視覺感知色彩屬性的方式。在這些模型中,每種色調的顏色都排列在一個徑向切片中,圍繞中性色的中心軸,范圍從底部的黑色到頂部的白色:

[[430888]] 

用它表示顏色的優點是我們可以輕松地將顏色光譜分成相等的部分。

現在我們可以定義一個 create_pie_chart() 函數(或其他類型圖的函數): 

  1. # New import(s)  
  2. import matplotlib.pyplot as plt  
  3. from borb.pdf.canvas.layout.image.chart import Chart  
  4. from borb.pdf.canvas.layout.layout_element import Alignment  
  5. def create_piechart(labels: typing.List[str], data: typing.List[float]):  
  6.   # Symetric figure to ensure equal aspect ratio  
  7.   fig1, ax1 = plt.subplots(figsize=(4, 4))  
  8.   ax1.pie(  
  9.     data,  
  10.     explode=[0 for _ in range(0, len(labels))],  
  11.     labelslabels=labels,  
  12.     autopct="%1.1f%%" 
  13.     shadow=True 
  14.     startangle=90 
  15.     colors=create_n_colors(len(labels)),  
  16.   )  
  17.   ax1.axis("equal")  # Equal aspect ratio ensures that pie is drawn as a circle.  
  18.   return Chart(  
  19.     plt.gcf(),  
  20.     width=Decimal(200),  
  21.     height=Decimal(200),  
  22.     horizontal_alignment=Alignment.CENTERED,  
  23.   ) 

在這里,我們使用 Matplotlib 通過 pie() 函數創建餅圖。

PyPlot 實例的 gcf() 函數返回當前圖形。該圖可以嵌入到 PDF 文檔中,方法是將其注入到 Chart 構造函數中,并與您的自定義參數(例如width, height 和 horizontal_alignment)一起插入。

您只需向Chart構造函數提供一個 Matplotlib 圖。

將 Matplotlib 圖表添加到 PDF 文檔

現在是時候創建我們的 PDF 文檔并向其中添加內容了。 

  1. # New import(s)  
  2. from borb.pdf.document import Document  
  3. from borb.pdf.page.page import Page  
  4. from borb.pdf.pdf import PDF  
  5. from borb.pdf.canvas.layout.page_layout.multi_column_layout import MultiColumnLayout  
  6. from borb.pdf.canvas.layout.page_layout.page_layout import PageLayout  
  7. from borb.pdf.canvas.layout.text.paragraph import Paragraph  
  8. # Create empty Document  
  9. pdf = Document()  
  10. # Create empty Page  
  11. page = Page()  
  12. # Add Page to Document  
  13. pdf.append_page(page)  
  14. # Create PageLayout  
  15. layout: PageLayout = MultiColumnLayout(page) 
  16. # Write title  
  17. layout.add(Paragraph("About Lorem Ipsum",   
  18.                      font_size=Decimal(20),   
  19.                      font="Helvetica-Bold")) 

我們將在此 PDF 中使用連字符,以確保文本的布局更加流暢。borb 中的連字符非常簡單: 

  1. # New import(s)  
  2. from borb.pdf.canvas.layout.hyphenation.hyphenation import Hyphenation  
  3. # Create hyphenation algorithm  
  4. hyphenation_algorithm: HyphenationHyphenation = Hyphenation("en-gb")  
  5. # Write paragraph  
  6. layout.add(Paragraph(  
  7.     """  
  8.     Lorem Ipsum is simply dummy text of the printing and typesetting industry.   
  9.     Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,  
  10.     when an unknown printer took a galley of type and scrambled it to make a type specimen book.   
  11.     It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.   
  12.     It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages,   
  13.     and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.  
  14.     """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm)) 

現在我們可以使用我們之前聲明的函數添加餅圖; 

  1. # Write graph  
  2. layout.add(create_piechart(["Loren", "Ipsum", "Dolor"],   
  3.                            [0.6, 0.3, 0.1])) 

接下來我們將編寫另外三個 Paragraph對象。其中一個將不僅僅表示引用(側面邊框,不同字體等)。 

  1. # Write paragraph  
  2. layout.add(Paragraph(  
  3.     """  
  4.     Contrary to popular belief, Lorem Ipsum is not simply random text.   
  5.     It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.   
  6.     Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words,   
  7.     consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature,   
  8.     discovered the undoubtable source.  
  9.     """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm))  
  10. # Write paragraph  
  11. layout.add(Paragraph(  
  12.     """  
  13.     Lorem Ipsum is simply dummy text of the printing and typesetting industry.   
  14.     """,   
  15.     font="Courier-Bold" 
  16.     text_alignment=Alignment.JUSTIFIED,   
  17.     hyphenation=hyphenation_algorithm 
  18.     border_color=HexColor("56cbf9"), 
  19.     border_width=Decimal(3),  
  20.     border_left=True 
  21.     padding_left=Decimal(5),  
  22.     padding_bottom=Decimal(5),  
  23. ))  
  24. # Write paragraph  
  25. layout.add(Paragraph(  
  26.     """  
  27.     Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum"  
  28.     (The Extremes of Good and Evil) by Cicero, written in 45 BC.   
  29.     This book is a treatise on the theory of ethics, very popular during the Renaissance.  
  30.     """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm)) 

讓我們添加另一個繪圖。 

  1. # Write graph  
  2. layout.add(create_piechart(["Loren", "Ipsum", "Dolor", "Sit", "Amet"],   
  3.                            [600, 30, 89, 100, 203])) 

還有一段內容(Paragraph): 

  1. # Write paragraph  
  2. layout.add(Paragraph(  
  3.     """  
  4.     It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.  
  5.     The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here',   
  6.     making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text,   
  7.     and a search for 'lorem ipsum' will uncover many web sites still in their infancy.   
  8.     Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).  
  9.     """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm)) 

最后,我們可以存儲文檔(Document): 

  1. # Write to disk  
  2. with open("output.pdf", "wb") as pdf_file_handle:  
  3.   PDF.dumps(pdf_file_handle, pdf) 

運行此代碼會生成如下所示的 PDF 文檔:

 

 

在本文中,您學習了如何使用 borb 將 Matplotlib 圖表集成到 PDF 。 

 

 

責任編輯:龐桂玉 來源: Python中文社區
相關推薦

2010-02-24 15:25:41

ibmdwGooglePHP

2022-12-01 17:13:44

2009-04-01 10:38:00

RFID Web服務

2012-10-11 17:01:08

IBMdw

2020-09-17 16:00:03

Python 開發編程語言

2022-03-24 07:44:41

OPA安全策略Rego

2012-11-01 11:34:31

IBMdw

2021-04-01 15:42:45

人工智能軟件測試

2011-09-02 14:05:57

云計算解決方案虛擬化

2021-12-08 16:49:19

CICD

2022-07-13 15:54:14

Matplotlib圖表

2018-07-11 11:26:55

2023-06-26 14:03:31

2023-03-07 11:42:38

ChatGPT開發工具

2021-05-10 15:14:23

Python棒棒糖圖表

2025-10-28 11:16:33

OpenCodeAI終端

2025-11-10 07:05:00

Python數據可視化數據

2021-12-24 14:29:15

物聯網IoT太陽能

2024-04-28 15:19:02

GPU云服務器機器學習人工智能

2011-07-11 18:22:34

點贊
收藏

51CTO技術棧公眾號

国产精品区二区三区日本| 亚洲三级视频| www.三区| 天堂中文av在线资源库| 精品国内二区三区| 精品日本一区二区三区在线观看| 亚洲精品麻豆| 欧洲金发美女大战黑人| 国产日韩精品一区| 欧美一区二区少妇| 国产成人福利片| 成人激情在线观看| 丝袜脚交一区二区| 欧美丰满美乳xxx高潮www| 福利视频在线| 91中文在线观看| 国产一级爱c视频| 一区二区三区午夜探花| 久久精品第九区免费观看| 国产精品香蕉| 91色视频在线导航| 国产最新精品精品你懂的| 91系列在线播放| 麻豆国产精品官网| 可播放的18gay1069| 日韩午夜激情免费电影| 日韩精品成人在线观看| 亚洲自拍偷拍第一页| 精品婷婷色一区二区三区蜜桃| 国产一区二区三区综合| 777电影在线观看| 欧美一级生活片| 色中文字幕在线观看| 免费成人在线电影| 北岛玲一区二区三区四区| 无人在线观看的免费高清视频| 国产精品乱码| 精品综合久久久久久8888| 91在线视频导航| 国产东北露脸精品视频| 日本不卡一区二区三区在线观看| 福利一区福利二区| 免费观看v片在线观看| 26uuu国产电影一区二区| 日韩欧美手机在线| 国产精品高潮久久久久无| 欧美xxxxhdvideosex| 91sa在线看| 国产一区二区在线看| 国产999精品久久久| 欧美少妇xxx| 一区二区三区四区高清精品免费观看 | 欧美日韩老妇| 欧美xnxx| 日韩精品在线一区二区| 精品一区二区三区免费视频| 成人直播在线观看| 欧美激情视频一区二区三区| 69国产精品视频| 一区二区免费视频| а√天堂在线官网| 日韩无一区二区| 色欧美激情视频在线| 国产不卡网站| 韩国在线视频一区| 欧美亚洲日本在线观看| 亚洲精品一线二线三线无人区| 国产精品色在线网站| 黄视频网站在线观看| 在线观看高清av| 国产高清不卡av| 欧美美女直播网站| 国产日韩亚洲| 亚洲国内高清视频| 欧美精品日日鲁夜夜添| 丁香婷婷久久| 久久精品视频网| 青青青在线视频免费观看| 亚洲人成电影网站色| 男人添女人下部视频免费| 亚洲一区二区电影| 日韩电影免费观看在线观看| 在线天堂日本| 天天操天天色综合| 成人精品在线| 日韩动漫在线观看| 日韩免费在线免费观看| 日韩经典中文字幕一区| 精品视频免费在线播放| 婷婷激情一区| 日韩欧美中文字幕公布| 久久久久久一区二区| 欧美在线三级| 91精品久久久久| 91丨九色丨国产丨porny| 男人添女荫道口女人有什么感觉| 国产综合一区二区| 中文字幕国内自拍| 国产一区二区日韩精品欧美精品| 婷婷精品进入| 怡红院亚洲色图| 91精品在线观看入口| 成人av免费电影| 国产91丝袜在线观看| 狠狠色一日本高清视频| aiai久久| 亚洲午夜一区二区| www.成人.com| 国产精品77777| 国产高清一级毛片在线不卡| 91精品美女在线| 视频一区欧美日韩| 黄色av免费在线观看| 综合久久综合| 国产日本欧美一区| 欧美视频一区二| 亚洲特黄一级片| 亚洲天堂av一区| 成人午夜短视频| 精品无人区一区二区三区竹菊| 色在人av网站天堂精品| 精品深夜福利视频| 国产九色porny| 女人帮男人橹视频播放| 国内自拍中文字幕| 黄色一级视频播放| 成人午夜免费在线| 国产一线二线三线在线观看| 人妻无码久久一区二区三区免费| 亚洲一区二区三区毛片| 国产一区二区三区av在线| 国产精品久久一区二区三区| 狠狠色香婷婷久久亚洲精品| 中文字幕在线官网| 超碰在线公开| 狼人精品一区二区三区在线| 精品国产鲁一鲁****| 高清一区二区三区| 欧美女人交a| 午夜小视频在线观看| 在线观看欧美日韩电影| 偷拍自拍亚洲| 欧美日韩一区二区三区四区不卡| 久久av免费| 久久一本综合频道| 18涩涩午夜精品.www| 色欲综合视频天天天| 国产一区二区三区直播精品电影 | 美女av电影| 欧美v亚洲v| 99免费精品| 国产成人啪午夜精品网站男同| 国产成人亚洲综合a∨婷婷图片| 岛国精品在线观看| 日本道精品一区二区三区| 一级做a爰片久久毛片美女图片| 91sa在线看| 88国产精品欧美一区二区三区| 91亚洲人电影| 九九热精品在线| 国产视频一区二区不卡| 91看片淫黄大片91| av影片免费在线观看| 超碰这里只有精品| 欧美a级一区| 国产91露脸合集magnet| 日韩一区二区免费电影| 国产精品久久久久久久久影视| 国产资源在线视频| 丝袜国产在线| 激情久久一区| 3d动漫成人在线| 亚洲妇女成熟| 亚洲大黄网站| 在线中文字幕一区| 国产成人欧美在线观看| 国产91av视频在线观看| 无圣光视频在线观看| 精品少妇一区| 中文字幕一区二区三区在线观看| 中文字幕亚洲国产| 男人天堂1024| 欧美激情福利| 欧美123区| 国产又黄又大久久| 亚洲欧美国产va在线影院| 性色av一区二区三区| 久久精品五月婷婷| 欧美成人视屏| 欧美在线观看在线观看| 色喇叭免费久久综合| 久久国产精品亚洲人一区二区三区| 激情久久久久| 精品视频1区2区| 91亚洲精品久久久久久久久久久久| 欧美男人的天堂| 在线天堂av| 日本在线视频www| 日韩精品一区二区三区外面| 伊人75在线|