Mehrere Elemente in matplotlib rastern

Ich habe Probleme, wenn ich viele Zeilen in einem Plot mit dem Schlüsselwort rasterized = True mithilfe der PDF-Ausgabe rastere. Einige Versionsinformationen:

matplotlib version 1.1.1rcUbuntu 12.04Python 2.7.3

Hier ist ein einfaches Beispiel, das mein Problem zeigt:

# 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()

Im Wesentlichen habe ich eine Menge (200 in diesem Fall) eng überlappender Linien, was das Laden der resultierenden Figur (nicht gerastert) übermäßig schwierig macht. Ich möchte diese Linien rastern, so dass die Achsenbeschriftungen (und andere Elemente des Plots, nicht gezeigt) Vektoren bleiben, während die Lösungstrajektorien auf einen einzelnen Rasterhintergrund abgeflacht werden. Bei Verwendung des obigen Codes dauert das Laden des Bilds jedoch noch lange, da jede Flugbahn unabhängig gerastert wird, was zu mehreren Ebenen führt. (Wenn ich das resultierende PDF mit einem Programm wie inkscape öffne, kann ich jede Trajektorie einzeln bearbeiten.)

Ist es möglich, alle gerasterten Elemente auf eine Ebene zu reduzieren, sodass die PDF-Größe erheblich reduziert wird?

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage