matplotlib 后端对渲染格式有什么限制?

2024-05-11

我对 matplotlib 使用的后端在确定可以呈现哪些格式方面所扮演的角色感到困惑。

例如,文件说 http://matplotlib.org/faq/usage_faq.html#what-is-a-backend“agg”后端生成 PNG,“光栅图形”,但如果我

import matplotlib
matplotlib.use(‘agg’)

import matplotlib.pyplot
fig, ax = matplotlib.pyplot.subplots()
#...

我可以用

fig.savefig(“thefig.pdf”)

生成 PDF,或者

fig.savefig(“thefig.svg”)

生成矢量图形。

后端在限制 matplotlib 可以生成的渲染格式和类型(矢量与栅格)方面发挥什么作用?


好问题!这Agg后端本身只产生光栅图形。

当你打电话时发生了什么fig.savefig('name.pdf') (or .svg)就是后端临时改成生成向量输出。

每个后端都可以选择如何处理这个问题,但是对于Agg,当您保存矢量输出时,它基本上会执行以下操作:

pdf = self.switch_backends(FigureCanvasPdf)
return pdf.print_pdf(*args, **kwargs)

同样,对于 PDF 后端,如果要求保存光栅图像,它会暂时切换到 Agg。

对于非交互式后端,可以动态切换后端,因此该技术在“幕后”被广泛使用,以允许以多种格式保存图形。


更详细一点,以防您编写 matplotlib 后端:任何 matplotlib Canvas 实例都有几个print_<format>方法:

In [24]: backend_bases.FigureCanvasBase.print_<tab>
backend_bases.FigureCanvasBase.print_bmp           
backend_bases.FigureCanvasBase.print_eps           
backend_bases.FigureCanvasBase.print_figure        
backend_bases.FigureCanvasBase.print_jpeg          
backend_bases.FigureCanvasBase.print_jpg           
backend_bases.FigureCanvasBase.print_pdf           
backend_bases.FigureCanvasBase.print_pgf           
backend_bases.FigureCanvasBase.print_png           
backend_bases.FigureCanvasBase.print_ps            
backend_bases.FigureCanvasBase.print_raw           
backend_bases.FigureCanvasBase.print_rgba          
backend_bases.FigureCanvasBase.print_svg           
backend_bases.FigureCanvasBase.print_svgz          
backend_bases.FigureCanvasBase.print_tif           
backend_bases.FigureCanvasBase.print_tiff 

The print_figure方法通常控制保存。保存为特定格式是通过查找适当的格式来处理的print_<formatname>方法(参见FigureCanvasBase._get_print_method以获得确切的详细信息)。

每个后端通过重写这些方法来指定它可以保存为哪些格式。每个的默认设置是暂时切换回相关的“基本”后端(例如,用于光栅格式的 Agg、用于 pdf 的 PDF、用于 svg 的 SVG 等)。即使您使用的后端仅支持单一格式,这也允许将数字轻松保存为所有格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matplotlib 后端对渲染格式有什么限制? 的相关文章

随机推荐

  • 从最大到最小的3个整数

    我是 C 初学者 我使用 编程 使用 C 的原理与实践 第二版 问题如下 编写一个程序 提示用户输入三个整数值 然后以逗号分隔的数字顺序输出这些值 如果两个值相同 则应将它们排列在一起 include
  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • C#“var”关键字在 VB.NET 中的等价物是什么?

    例如 我如何获得 VB NET静态类型局部变量是static赋值右侧的表达式的类型 像这样 Dim http msdn microsoft com en us library 7ee5a7s1 aspx我的变量 3 你还需要 选项推断 ht
  • 滑动时向 PageView 添加新页面

    我目前正在制作一个日历应用程序 我想向右或向左滑动以转到下个月或上个月 我使用 PageView 时首先设置了一个包含 3 个项目的数组 第一个页面是第二个项目 我想向右滑动并在末尾添加一个页面 我想向左滑动并在开头添加一个页面 目前 如果
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id
  • Golang 优雅地关闭 HTTP 服务器并进行错误处理

    我正在让我的 HTTP 服务器正常关闭 我从帖子中获取了提示here https stackoverflow com questions 39320025 how to stop http listenandserve 并且到目前为止已经像
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • jQuery 插件 (DataTables) 仅在页面刷新时正确加载

    我在使用数据表时遇到问题 当我从不同页面上的链接转到带有表格的页面时 它只会加载表格的 HTML 文本 版本 没有任何 CSS 格式 也没有 JavaScript 排序 搜索等 但是 当我刷新页面时 它将完美加载 在寻找这个问题的答案后 我
  • 将 PDF 转换为 JPG 时质量低

    我正在尝试使用 Imagemagic RMAgick 将 PDF 文档转换为图像 原始 PDF 也是从图像创建的 不是原生矢量 PDF image Magick Image from blob original pdf self forma
  • 检测注册表虚拟化

    我有一组 C v2 应用程序 并且在 Win7 以及较小程度上的 Vista 中的注册表虚拟化方面遇到了困难 我有一个共享注册表配置区域 我的应用程序需要在 HKLM Software Company 中访问该区域 在 Vista 之前 所
  • Android:我无法让 ViewPager WRAP_CONTENT

    我设置了一个简单的 ViewPager 每个页面上都有一个高度为 200dp 的 ImageView 这是我的寻呼机 pager new ViewPager this pager setLayoutParams new LayoutPara
  • Iphone safari 无法在键盘打开时调整视口大小

    当键盘弹出时 Mobile safari 不会更新 window innerHeight 至少在9 3 5中 并且有几个答案 例如this https stackoverflow com a 17604856 2423187一 有评论说在
  • 使用Sed查找并替换json字段

    我有一组 json 文件 其中在最后一个键值对之后有需要替换的逗号 RepetitionTime 0 72 TaskName WM Manufacturer Siemens ManufacturerModelName Skyra Magne
  • Netbeans 8 和 xdebug 非常非常慢

    我读过有关此问题的其他帖子 但我无法在本地 Web 服务器 Windows 7 上的 apache 2 4 9 php 5 5 12 上使用 xdebug 2 2 5 和 netbeans 8 0 1 获得令人满意的性能 有些页面加载时间超
  • XSLT:如何防止 XSLT 代码在输出 xml 中生成冗余空格

    使用我的 XSL 代码 每当我删除一个元素 它都会在输出 xml 中引入一个空白行空间 这会妨碍树形结构外观XML的 你能建议我 如何摆脱它 这是示例代码示例 XML 示例
  • 获取签出修订版的 git 标签?

    我正在做 git tag current tag example to test task git checkout tag example to test task HEAD is now at 75fdde3 commit commen
  • cudaMemcpy() 与 cudaMemcpyFromSymbol()

    我试图找出原因cudaMemcpyFromSymbol 存在 似乎 symbol func 可以做的所有事情 nonSymbol cmd 也可以做 symbol func 似乎可以轻松移动数组或索引的一部分 但这也可以使用 nonSymbo
  • Alembic 无法识别 False 默认值

    在维护 SQLAlchemy 数据模型并利用 alembic 进行版本控制时 我所做的以下代码更改导致了空修订 some column Column Boolean nullable False default False 以前是 some
  • 多视图几何

    我从相距一定距离的两台相同品牌的相机捕获了两张图像 捕获了相同的场景 我想计算两个相机之间的现实世界旋转和平移 为了实现这一点 我首先提取了两张图像的 SIFT 特征并进行匹配 我现在有基本矩阵也单应性矩阵 然而无法进一步进行 有很多混乱
  • matplotlib 后端对渲染格式有什么限制?

    我对 matplotlib 使用的后端在确定可以呈现哪些格式方面所扮演的角色感到困惑 例如 文件说 http matplotlib org faq usage faq html what is a backend agg 后端生成 PNG