2012-08-23 12 views
6

में एकाधिक तत्वों को रास्टराइज करना मुझे पीडीएफ आउटपुट का उपयोग करके रास्टरराइड = ट्रू कीवर्ड का उपयोग करके प्लॉट में कई लाइनों को रास्टराइज करने में समस्याएं आ रही हैं। कुछ संस्करण जानकारी:matplotlib

# 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 संस्करण 1.1.1rc
  • Ubuntu 12.04
  • अजगर 2.7.3

यहाँ एक बुनियादी उदाहरण है कि मेरी समस्या यह दर्शाता है अनिवार्य रूप से, मेरे पास बारीकी से ओवरलैपिंग लाइनों के बहुत सारे (200 इस मामले में) हैं जो परिणामी फाई बनाता है लोड करने के लिए अत्यधिक मुश्किल (रास्टरराइज्ड नहीं)। मैं इन पंक्तियों को रास्टराइज़ करना चाहता हूं, जैसे धुरी लेबल (और साजिश के अन्य तत्व, दिखाए गए नहीं) वेक्टर बने रहते हैं जबकि समाधान ट्रैजेक्टोरियां एक रास्टर पृष्ठभूमि में चपेट में आती हैं। हालांकि, उपर्युक्त कोड का उपयोग करके, छवि को लोड करने में काफी समय लगता है क्योंकि प्रत्येक प्रक्षेपवक्र स्वतंत्र रूप से रास्टराइज किया जाता है, जिसके परिणामस्वरूप कई परतें होती हैं। (यदि मैं परिणामस्वरूप पीडीएफ को इंकस्केप जैसे प्रोग्राम के साथ खोलता हूं, तो मैं प्रत्येक प्रक्षेपवक्र को स्वतंत्र रूप से कुशलतापूर्वक उपयोग कर सकता हूं।)

क्या सभी रास्टरराइज्ड तत्वों को एक परत में फ़्लैट करना संभव है, इसलिए पीडीएफ आकार बहुत कम हो जाएगा?

धन्यवाद!

उत्तर

7

बदलें कोड के लिए:

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

मदद के लिए धन्यवाद! मुझे पता नहीं था कि एक अलग स्थान पर रास्टरराइजेशन सेट करने से परिणाम बदल जाएगा। मैं थोड़ा अलग संस्करण का उपयोग कर समाप्त हुआ, क्योंकि मेरे पास मेरी साजिश पर अन्य विशेषताएं थीं, मैं वेक्टर प्रारूपों में रखना चाहता था। अब मैं वांछित प्रभाव के लिए उपयोग कर रहा हूँ: 'कुल्हाड़ी = fig.add_subplot (111),' ' ax.set_rasterization_zorder (1);' ' ax.plot (टीएस [0], ys.T, रंग = 'आर', एलडब्ल्यू = 0.5, अल्फा = 0.5, ज़ॉर्डर = 0) ' – pstjohn