Buona domanda! Il backend Agg
produce solo grafica raster.
Che cosa succede quando si chiama fig.savefig('name.pdf')
(o .svg
) è che il backend viene temporaneamente modificato per generare output vettoriale.
Ogni backend può scegliere come gestisce questo, ma per Agg
, quando si salva in uscita vettore, lo fa essenzialmente:
pdf = self.switch_backends(FigureCanvasPdf)
return pdf.print_pdf(*args, **kwargs)
Allo stesso modo, per il backend PDF, si passa temporaneamente al Agg se richiesto per salvare un'immagine raster.
La commutazione dei backend può essere eseguita al volo per i backend non interattivi, quindi questa tecnica è ampiamente utilizzata "dietro le quinte" per consentire il salvataggio di figure in più formati.
Un po 'più in dettaglio, nel caso in cui si sta mai scrivere un backend matplotlib: Qualsiasi matplotlib Tela esempio ha diversi metodi 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
I controlli print_figure
metodo di risparmio in generale. Il salvataggio in un formato specifico viene gestito consultando il metodo appropriato print_<formatname>
(vedere FigureCanvasBase._get_print_method
per i dettagli esatti).
Ogni backend specifica quali formati è possibile salvare sovrascrivendo tali metodi. L'impostazione predefinita per ciascuna è di tornare temporaneamente al back-end "base" pertinente (ad esempio Agg per i formati raster, PDF per PDF, SVG per svg, ecc.). Ciò consente di salvare facilmente le figure in tutti i formati anche se il back-end utilizzato supporta solo un singolo formato.
fonte
2014-11-01 19:33:17
Grazie! Questa è esattamente l'informazione che stavo cercando. – orome