Rasterizando múltiples elementos en matplotlib.

Tengo problemas al rasterizar muchas líneas en un gráfico usando la palabra clave rasterized = True usando la salida pdf. Alguna información de la versión:

  • matplotlib versión 1.1.1rc
  • ubuntu 12.04
  • python 2.7.3

Aquí hay un ejemplo básico que demuestra mi problema:

# Import matplotlib to create a pdf document import matplotlib matplotlib.use('Agg') from matplotlib.backends.backend_pdf import PdfPages pdf = PdfPages('rasterized_test.pdf') import matplotlib.pylab as plt # some test data import numpy as np ts = np.linspace(0,2*np.pi,100) * np.ones((200,100)) ts += (np.linspace(0, np.pi, 200)[np.newaxis] * np.ones((100,200))).T ys = np.sin(ts) fig = plt.figure() ax = fig.add_subplot(111) ax.plot(ts[0], ys.T, color='r', lw=0.5, alpha=0.5, rasterized=True) pdf.savefig() pdf.close() 

Esencialmente, tengo un montón (200 en este caso) de líneas superpuestas que hacen que la figura resultante (no rasterizada) sea demasiado difícil de cargar. Me gustaría rasterizar estas líneas, de manera que las tags de los ejes (y otros elementos de la gráfica, no mostrados) sigan siendo vectores mientras las trayectorias de la solución se aplanan en un fondo de ttwig único. Sin embargo, al usar el código anterior, la imagen tarda mucho tiempo en cargarse, ya que cada trayectoria se rasteriza de forma independiente, lo que da como resultado múltiples capas. (Si abro el pdf resultante con un progtwig como inkscape, puedo manipular cada trayectoria de forma independiente).

¿Es posible aplanar todos los elementos rasterizados en una sola capa, por lo que el tamaño del PDF se reduciría considerablemente?

¡Gracias!

Cambie el código a:

 ax = fig.add_subplot(111, rasterized=True) ax.plot(ts[0], ys.T, color='r', lw=0.5, alpha=0.5)