返回顶部
首页 > 资讯 > 后端开发 > Python >Python 如何将 matplotlib 图表集成进到PDF 中
  • 907
分享到

Python 如何将 matplotlib 图表集成进到PDF 中

2024-04-02 19:04:59 907人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1.介绍2.安装 borb和 matplotlib3.将 Matplotlib 图表添加到 pdf 文档1.介绍 PDF 格式是与平台无关,它独立于底层操作系统和渲染引擎。事实上

1.介绍

PDF 格式是与平台无关,它独立于底层操作系统和渲染引擎。事实上,PDF 是基于一种脚本语言——PostScript,它是第一个独立于设备的页面描述语言。

在本指南中,我们将使用 borb —— 一个专门用于阅读、操作和生成 PDF 文档的 python 库。它提供了一个低级模型(允许您访问精确的坐标和布局)和一个高级模型(您可以将边距、位置等精确计算委托给布局管理器) .

matplotlib 是一个数据可视化库,也是许多其他流行库(如 Seaborn)背后的引擎。

基于用于创建报告(通常包括图形)的常见 PDF 文档,我们将看看如何使用 borbMatplotlib 图表集成到 PDF 文档中。

2.安装 borb和 matplotlib

borb 可以从 GitHub 上的源代码下载,或通过 pip 安装:

$ pip install borb

matplotlib 也可以通过 pip 安装:

$ pip install matplotlib

用 Borb 在 PDF 文档中集成 Matplotlib 图表

在创建饼图等图表之前,我们将编写一个小的效用函数,该函数生成 N 种颜色,均匀分布在颜色光谱中。

每当我们需要创建绘图并为每个部分着色时,这将对我们有所帮助:

from borb.pdf.canvas.color.color import HSVColor, HexColor
from decimal import Decimal
import typing
 
def create_n_colors(n: int) -> typing.List[str]:
  # The base color is borb-blue
  base_hsv_color: HSVColor = HSVColor.from_rgb(HexColor("56cbf9"))
  # This array comprehension creates n HSVColor objects, transfORMs then to RGB, and then returns their hex string
  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 年代设计的,目的是更接近人类视觉感知色彩属性的方式。在这些模型中,每种色调的颜色都排列在一个径向切片中,围绕中性色的中心轴,范围从底部的黑色到顶部的白色:

用它表示颜色的优点是我们可以轻松地将颜色光谱分成相等的部分。

现在我们可以定义一个 create_pie_chart() 函数(或其他类型图的函数):

# New import(s)
import matplotlib.pyplot as plt
from borb.pdf.canvas.layout.image.chart import Chart
from borb.pdf.canvas.layout.layout_element import Alignment
 
def create_piechart(labels: typing.List[str], data: typing.List[float]):
 
  # Symetric figure to ensure equal aspect ratio
  fig1, ax1 = plt.subplots(figsize=(4, 4))
  ax1.pie(
    data,
    explode=[0 for _ in range(0, len(labels))],
    labels=labels,
    autopct="%1.1f%%",
    shadow=True,
    startangle=90,
    colors=create_n_colors(len(labels)),
  )
 
  ax1.axis("equal")  # Equal aspect ratio ensures that pie is drawn as a circle.
 
  return Chart(
    plt.GCf(),
    width=Decimal(200),
    height=Decimal(200),
    horizontal_alignment=Alignment.CENTERED,
  )

在这里,我们使用 Matplotlib 通过 pie() 函数创建饼图。

PyPlot 实例的 gcf() 函数返回当前图形。该图可以嵌入到 PDF 文档中,方法是将其注入到 Chart 构造函数中,并与您的自定义参数(例如width, height 和 horizontal_alignment)一起插入。

我们只需向Chart构造函数提供一个 Matplotlib 图。

3.将 Matplotlib 图表添加到 PDF 文档

现在是时候创建我们的 PDF 文档并向其中添加内容了。

# New import(s)
from borb.pdf.document import Document
from borb.pdf.page.page import Page
from borb.pdf.pdf import PDF
from borb.pdf.canvas.layout.page_layout.multi_column_layout import MultiColumnLayout
from borb.pdf.canvas.layout.page_layout.page_layout import PageLayout
from borb.pdf.canvas.layout.text.paragraph import Paragraph
 
# Create empty Document
pdf = Document()
 
# Create empty Page
page = Page()
 
# Add Page to Document
pdf.append_page(page)
 
# Create PageLayout
layout: PageLayout = MultiColumnLayout(page)
 
# Write title
layout.add(Paragraph("About Lorem Ipsum", 
                     font_size=Decimal(20), 
                     font="Helvetica-Bold"))

我们将在此 PDF 中使用连字符,以确保文本的布局更加流畅。borb 中的连字符非常简单:

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

现在我们可以使用我们之前声明的函数添加饼图;

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

接下来我们将编写另外三个 Paragraph对象。其中一个将不仅仅表示引用(侧面边框,不同字体等)。

# Write paragraph
layout.add(Paragraph(
    """
    Contrary to popular belief, Lorem Ipsum is not simply random text. 
    It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. 
    Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin Words, 
    consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, 
    discovered the undoubtable source.
    """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm))
 
# Write paragraph
layout.add(Paragraph(
    """
    Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
    """, 
    font="Courier-Bold",
    text_alignment=Alignment.JUSTIFIED, 
    hyphenation=hyphenation_algorithm,
    border_color=HexColor("56cbf9"),
    border_width=Decimal(3),
    border_left=True,
    padding_left=Decimal(5),
    padding_bottom=Decimal(5),
))
 
# Write paragraph
layout.add(Paragraph(
    """
    Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" 
    (The Extremes of Good and Evil) by Cicero, written in 45 BC. 
    This book is a treatise on the theory of ethics, very popular during the Renaissance.
    """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm))

让我们添加另一个绘图。

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

还有一段内容(Paragraph):

# Write paragraph
layout.add(Paragraph(
    """
    It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. 
    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', 
    making it look like readable English. Many desktop publishing packages and WEB page editors now use Lorem Ipsum as their default model text, 
    and a search for 'lorem ipsum' will uncover many web sites still in their infancy. 
    Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).
    """, text_alignment=Alignment.JUSTIFIED, hyphenation=hyphenation_algorithm))

最后,我们可以存储文档(Document):

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

运行此代码会生成如下所示的 PDF 文档:

到此这篇关于Python 如何将 matplotlib 图表集成进到PDF 中的文章就介绍到这了,更多相关 matplotlib 图表集成到 PDF 中内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python 如何将 matplotlib 图表集成进到PDF 中

本文链接: https://lsjlt.com/news/144194.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 如何将 matplotlib 图表集成进到PDF 中
    目录1.介绍2.安装 borb和 matplotlib3.将 Matplotlib 图表添加到 PDF 文档1.介绍 PDF 格式是与平台无关,它独立于底层操作系统和渲染引擎。事实上...
    99+
    2024-04-02
  • Python怎么将matplotlib图表集成进到PDF中
    今天小编给大家分享一下Python怎么将matplotlib图表集成进到PDF中的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-06-29
  • PHP+ImageMagick如何将PDF转成图片
    这篇文章将为大家详细讲解有关PHP+ImageMagick如何将PDF转成图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。           &nbs...
    99+
    2023-06-26
  • 如何利用python将Matplotlib可视化插入到Excel表格中
    这篇文章主要讲解了“如何利用python将Matplotlib可视化插入到Excel表格中”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用python将Matplotlib可视化插入到...
    99+
    2023-07-02
  • PHP中如何进行Python集成?
    PHP是一种流行的服务器端脚本语言,而Python则是一种广泛使用的高级编程语言,用于Web开发、数据科学、人工智能等众多领域。将PHP与Python集成可以为Web开发带来更多的可能性和优势。本文将介绍如何在PHP中进行Python集成。...
    99+
    2023-05-20
    Python 集成 PHP
  • 将SCONS工具集成到Python代码中
        SCONS是Python的自动智能结构化编译工具,将来或许能代替Make。    在Windows或者Linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上...
    99+
    2023-01-31
    代码 工具 SCONS
  • python如何批量将PPT导出成图片集
    本篇内容主要讲解“python如何批量将PPT导出成图片集”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何批量将PPT导出成图片集”吧!导读需要使用python做一个将很多个不规则...
    99+
    2023-06-07
  • 详解如何将Spire.XLSforC++集成到C++程序中
    目录通过 NuGet 安装Spire.XLS for C++通过手动导入库安装 Spire.XLS for C++Spire.XLS for C++ 是一个 Excel 库...
    99+
    2023-03-11
    Spire.XLS for C++集成到C++ Spire.XLS for C++ Spire.XLS C++
  • 利用python将 Matplotlib 可视化插入到 Excel表格中
    目录数据可视化图表插入Excel前言: 在生活中工作中,我们经常使用Excel用于储存数据,Tableau等BI程序处理数据并进行可视化。我们也经常使用R、Python编程进行高质量...
    99+
    2024-04-02
  • Python怎么将pdf转为图片?Python如何实现pdf文件转图片
    而pdf则是用来保存一些内容已经确定好的数据,因为pdf是无法直接修改内容的,所以也会经常将pdf转为图片来保存。本文就将会来介绍一下pdf转图片的方法,往下看看吧。 1.pdf转图片的话主要实现所需要的模块叫做PyMuPDF,它就是用来...
    99+
    2023-09-02
    python Powered by 金山文档
  • 如何将 Java 函数集成到 Linux Shell 脚本中?
    在今天的软件开发中,Java 已经成为了一种非常流行的编程语言。在很多情况下,我们需要将 Java 函数集成到 Linux Shell 脚本中,以便更好地利用其功能。本文将介绍如何将 Java 函数集成到 Linux Shell 脚本中,并...
    99+
    2023-08-10
    函数 linux shell
  • Python如何合并多张图片成PDF
    小编给大家分享一下Python如何合并多张图片成PDF,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!过程拿到一个需求最重要的就是将大块任务拆分成一个个小模块,逐个...
    99+
    2023-06-15
  • 如何将NumPy集成到实时ASP应用程序中?
    在实时ASP应用程序中,将NumPy集成进去可以使得应用程序更加强大和高效。NumPy是一个用于科学计算的Python库,提供了高效的多维数组对象和各种数学函数。在本文中,我们将介绍如何将NumPy集成到实时ASP应用程序中,以便更好地处...
    99+
    2023-09-24
    linux numpy 实时
  • 你知道如何将NumPy集成到Java项目中吗?
    当涉及到Java项目中使用科学计算库时,NumPy是一个非常流行的选择。NumPy是Python中最常用的科学计算库之一,它提供了一些强大的数据结构和函数,用于快速处理大型数据集和矩阵运算。在本文中,我们将探讨如何将NumPy集成到Java...
    99+
    2023-10-18
    path ide numy
  • 如何将自定义函数集成到PHP代码中?
    在 php 中,您可以通过三个步骤集成自定义函数:创建函数加载函数调用函数这可通过以下方式应用于实际案例:创建一个计算矩形面积的自定义函数在代码中加载该函数调用函数多次以计算不同矩形的面...
    99+
    2024-04-18
    php 自定义函数 代码可读性
  • Python、Bash、IDE、Apache:如何将它们集成到您的开发流程中?
    随着技术的不断发展,越来越多的开发者开始使用多种工具和技术来提高他们的工作效率。Python、Bash、IDE和Apache是其中一些最常用的工具。在本文中,我们将讨论如何将它们集成到您的开发流程中,以便您可以更高效地工作。 Python...
    99+
    2023-07-23
    bash ide apache
  • Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
    问题:将图片转成datauri 今天,在QQ群有个群友问了个问题:“nodejs读取图片,转成base64,怎么读取呢?” 想了一下,他想问的应该是 怎么样把图片嵌入到网页中去,即如何把图片转成对应的 da...
    99+
    2022-06-04
    进阶 中去 转成
  • 利用spring-data-redis如何将redis集成到spring项目中
    利用spring-data-redis如何将redis集成到spring项目中?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Redis 做为基于内存的 Key-...
    99+
    2023-05-31
    spring-data-redis redis spring
  • 如何将 NPM 的文件对象集成到 PHP 项目中?
    在如今的软件开发中,NPM 已经成为了一个不可或缺的工具。NPM 是一个开源的包管理器,它为开发人员提供了数以万计的开源软件包,可以大大提高开发效率。PHP 作为一种流行的服务器端编程语言,也需要使用一些 NPM 的包来扩展其功能。本文将介...
    99+
    2023-11-12
    npm 文件 对象
  • Python中matplotlib如何绘制散点图
    小编给大家分享一下Python中matplotlib如何绘制散点图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在python中画散点图主要是用matplotlib模块中的scatter函数,先来看一下scatter函数的...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作