2012-08-23 3 views
6

pdf 출력을 사용하여 rasterized = True 키워드를 사용하여 플롯에서 여러 줄을 래스터화할 때 문제가 있습니다. 일부 버전 정보 :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
  • 우분투 12.04
  • 여기 파이썬 2.7.3

내 문제를 보여줍니다 기본 예제 본질적으로, 나는 밀접하게 겹치는 선들이 많아서 (이 경우에는 200 개) 결과 fi gure (래스터 화하지 않음)를로드하기가 너무 어렵습니다. 이 러한 선을 래스터 화하여 축 레이블 (및 플롯의 다른 요소, 표시되지 않음)을 벡터로 유지하면서 솔루션 궤적을 단일 래스터 배경으로 병합합니다. 그러나 위의 코드를 사용하면 각 궤도가 독립적으로 래스터 화되어 여러 레이어가 만들어지기 때문에 이미지를로드하는 데 시간이 오래 걸립니다. PDF 파일을 inkscape와 같은 프로그램으로 열면 각 궤도를 독립적으로 조작 할 수 있습니다.

모든 래스터 화 된 요소를 단일 레이어로 병합 할 수 있습니까? 그러면 PDF 크기가 크게 줄어들 것입니까?

감사합니다.

답변

7

변경 코드 : 도움을

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

감사합니다! 다른 위치에서 래스터 화를 설정하면 결과가 변경된다는 것을 알지 못했습니다. 약간 다른 버전을 사용했는데, 다른 플롯에 벡터 형식으로 보관하고 싶었 기 때문에. 이제 원하는 효과를 위해 사용하고 : 'AX = fig.add_subplot (111)'' ax.set_rasterization_zorder (1) '' ax.plot (TS [0] ys.T, color = 'r', lw = 0.5, alpha = 0.5, zorder = 0)' – pstjohn

관련 문제