Matplotlib Diferencias de backend entre Agg y Cairo

Hej,

Me gustaría producir archivos PDF de alta calidad a partir de diagramas de matplotlib. Usando otro código, he producido una gran variedad de números, que trazo en una figura usando plt.imshow. Si ahora produzco un PDF usando plt.savefig, noto fuertes diferencias dependiendo del backend que uso. Lo más importante es que los archivos producidos se vuelven enormes con el backend Agg o MacOSX, mientras que son razonablemente pequeños con Cairo (ver ejemplos a continuación). Por otro lado, el backend de El Cairo produce texto extraño junto con la representación de etiquetas de TeX. Esto se ve horrible en el documento TeX. Mi pregunta es, por lo tanto, doble:

¿Es posible producir PDF pequeños (es decir, presumiblemente sin interpolar la imagen ráster a una resolución más alta) utilizando el backend Agg? ¿Puede uno cambiar algunas configuraciones de texto para el backend de El Cairo de modo que se parezca al TeX ordinario (que es el caso del backend Agg)

Aquí hay un código de ejemplo para fines de prueba:

import matplotlib as mpl
mpl.use( "cairo" )

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['text.usetex'] = True

data = np.random.rand( 50, 50 )

plt.imshow( data, interpolation='nearest' )
plt.xlabel( 'X Label' )
plt.savefig( 'cairo.pdf' )

produce un PDF de 15Kb con una etiqueta x de mal aspecto.

import matplotlib as mpl
mpl.use( "agg" )

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['text.usetex'] = True

data = np.random.rand( 50, 50 )

plt.imshow( data, interpolation='nearest' )
plt.xlabel( 'X Label' )
plt.savefig( 'agg.pdf' )

produce un PDF de 986Kb que se ve bien.

Probablemente debería agregar que uso matplotlib 1.0.1 con python 2.6.7 en OSX 10.6.8. En los comentarios, alguien solicitó la salida degrep -a Font agg.pdf:

/Shading 6 0 R /Font 3 0 R >>
<< /FontFile 16 0 R /Descent -285 /FontBBox [ -174 -285 1001 953 ]
/StemV 50 /Flags 4 /XHeight 500 /Type /FontDescriptor
/FontName /NimbusSanL-Regu /CapHeight 1000 /FontFamily (Nimbus Sans L)
%!PS-AdobeFont-1.0: NimbusSanL-Regu 1.05a
FontDirectory/NimbusSanL-Regu known{/NimbusSanL-Regu findfont dup/UniqueID known{dup
/UniqueID get 5020902 eq exch/FontType get 1 eq and}{pop false}ifelse
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /NimbusSanL-Regu def
/FontBBox [-174 -285 1001 953 ]readonly def
/FontInfo 9 dict dup begin
/BaseFont /NimbusSanL-Regu /Type /Font /Subtype /Type1
/FontDescriptor 15 0 R /Widths 13 0 R /LastChar 255 /FirstChar 0 >>
<< /FontFile 20 0 R /Descent -251 /FontBBox [ -34 -251 988 750 ] /StemV 50
/Flags 4 /XHeight 500 /Type /FontDescriptor /FontName /CMR12
/CapHeight 1000 /FontFamily (Computer Modern) /ItalicAngle 0 /Ascent 750 >>
%!PS-AdobeFont-1.0: CMR12 003.002
%Copyright:  (<http://www.ams.org>), with Reserved Font Name CMR12.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup
/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR12 def
/FontBBox {-34 -251 988 750 }readonly def
/FontInfo 9 dict dup begin
 /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR12.) readonly def
<< /BaseFont /CMR12 /Type /Font /Subtype /Type1 /FontDescriptor 19 0 R

Respuestas a la pregunta(1)

Su respuesta a la pregunta