2012-08-23 14 views
6

pdf出力を使用してrasterized = Trueキーワードを使用してプロット内の多くの線をラスタライズするときに問題があります。 いくつかのバージョン情報:matplotlibの複数の要素をラスタライズ

  • matplotlibのバージョン1.1.1rc
  • のUbuntu 12.04
  • のpython 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)を持っています。ラスタライズされていないgureをロードするのが非常に困難です。私はこれらの線をラスタライズして、軸のラベル(およびプロットの他の要素、図示せず)がベクトルのままで、ソリューションの軌跡が単一のラスタの背景に平坦化されるようにしたいと思います。ただし、上記のコードを使用すると、各軌跡が独立してラスタライズされ、複数のレイヤーが作成されるため、画像のロードに時間がかかります。 (PDFファイルをinkscapeのようなプログラムで開くと、各軌道を個別に操作できます)

ラスタライズされた要素をすべて1つのレイヤーにまとめることができるので、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

関連する問題