2012-08-23 43 views
6

我在使用pdf輸出使用rasterized = True關鍵字柵格化柵格中的許多行時遇到問題。 一些版本信息:在matplotlib中柵格化多個元素

  • matplotlib版本1.1.1rc
  • 的Ubuntu 12.04
  • 蟒蛇2.7.3

以下是一個演示我的問題一個基本的例子:

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

從本質上講,我有很多(在這種情況下是200)緊密重疊的行,從而產生fi (沒有柵格化)太難加載。我想柵格化這些線條,使得軸標籤(和繪圖的其他元素,未顯示)保持向量,而解決方案軌跡平鋪爲單個柵格背景。但是,使用上面的代碼,由於每個軌跡都是獨立柵格化的,因此圖像加載需要很長時間,導致出現多個圖層。 (如果我用像inkscape這樣的程序打開生成的pdf,我可以獨立操作每個軌跡。)

是否有可能將所有柵格化元素平鋪到一個圖層中,這樣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,顏色='r',lw = 0.5,alpha = 0.5,zorder = 0) – pstjohn