Python matplotlib后端对渲染格式有什么限制?
我对matplotlib使用的后端在确定可以呈现何种格式时所起的作用感到困惑 例如,“agg”后端会生成PNG,“光栅图形”,但如果Python matplotlib后端对渲染格式有什么限制?,python,matplotlib,format,rendering,Python,Matplotlib,Format,Rendering,我对matplotlib使用的后端在确定可以呈现何种格式时所起的作用感到困惑 例如,“agg”后端会生成PNG,“光栅图形”,但如果 import matplotlib matplotlib.use(‘agg’) import matplotlib.pyplot fig, ax = matplotlib.pyplot.subplots() #... 我可以用 fig.savefig(“thefig.pdf”) 生成PDF,或 fig.savefig(“thefig.svg”) 生成矢量图
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')
(或.svg
)时,后端会临时更改以生成向量输出
每个后端都可以选择如何处理此问题,但对于Agg
,当您保存向量输出时,它基本上会:
pdf = self.switch_backends(FigureCanvasPdf)
return pdf.print_pdf(*args, **kwargs)
同样,对于PDF后端,如果要求保存光栅图像,它会临时切换到Agg
对于非交互式后端,可以动态切换后端,因此这种技术被广泛用于“幕后”,以允许以多种格式保存图形
更详细一点,以防编写matplotlib后端:任何matplotlib画布实例都有几个
print\uz
方法:
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
[24]中的:backend_base.figureCanvabase.print_
后端\u base.figureCanvabase.print\u bmp
后端\u base.figureCanvabase.print\u eps
后端\u base.figure canvasbase.print\u图
后端\u base.figureCanvabase.print\u jpeg
后端\u base.figureCanvabase.print\u jpg
backend_base.figureCanvabase.print_pdf
后端\u base.figureCanvabase.print\u pgf
backend_base.figureCanvabase.print_png
后端\u base.figureCanvabase.print\u ps
后端_base.figureCanvabase.print_raw
后端_base.figureCanvabase.print_rgba
后端_base.figureCanvabase.print_svg
后端_base.figureCanvabase.print_svgz
后端\u base.figureCanvabase.print\u tif
后端\u base.figureCanvabase.print\u tiff
print\u figure
方法通常控制保存。通过查找适当的print\u
方法(请参见FigureCanvabase.\u get\u print\u方法
了解确切的详细信息)来处理保存到特定格式的操作
每个后端通过重写这些方法指定它可以保存到的格式。每种格式的默认设置是临时切换回相关的“基本”后端(例如,光栅格式为Agg,PDF格式为PDF,SVG格式为SVG等)。这样,即使您使用的后端仅支持一种格式,也可以轻松地将图形保存为所有格式。谢谢!这正是我要找的信息。