2012-08-23 17 views
6

Pdf çıktısını kullanarak rasterized = True anahtar sözcüğünü kullanarak bir arsada birçok satırı rasterleştirirken sorun yaşıyorum. Bazı sürüm bilgisi:Matplotlib'de çoklu öğeleri rasterleştirme

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

:

  • matplotlib versiyonu 1.1.1rc
  • ubuntu 12.04
  • İşte piton 2.7.3

sorunumu gösteren temel bir örnek Aslında, sonuçta fi yapan çok yakın çakışan hatların (200 bu durumda) çok fazla var gure (rasterleştirilmemiş) yüklemek çok zor. Bu çizgilerin rasterleştirilmesini istiyorum, öyle ki, eksen etiketleri (ve gösterilmeyen diğer elemanlar, gösterilmiyor), çözüm yörüngeleri tek bir raster arka plana düzleştirilirken vektörler olarak kalıyor. Bununla birlikte, yukarıdaki kodu kullanarak, görüntü her bir yörünge bağımsız olarak rasterleştirildiği için birden çok katmanla sonuçlandığından, yüklenmesi uzun zaman alır. (Sonuçtaki pdf'yi inkscape gibi bir programla açarsam, her bir yörüngeyi bağımsız olarak değiştirebilirim.)

Tüm rasterleştirilmiş öğeleri tek bir katmana düzleştirmek mümkün mü, pdf boyutu büyük ölçüde azaltılabilir mi?

Teşekkürler!

cevap

7

değiştirme kodu: Yardım için

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

teşekkürler! Rasterleştirmeyi farklı bir konumda ayarlamanın sonucu değiştireceğinin farkında değildim. Biraz farklı bir versiyon kullanarak bitirdim, çünkü arsada başka özelliklerim vardı, vektör formatında tutmak istedim. şimdi istenen etki için kullanıyorum : 'ax = fig.add_subplot (111); ' ' ax.set_rasterization_zorder (1);' 'ax.plot (ts [0], ys.T, renk = 'r', lw = 0,5, alfa = 0,5, zorder = 0) – pstjohn