2012-12-25 22 views
6

アーティクルについては、変形した有限要素メッシュのプロットを生成しています。これはmatplotlibのpolycollectionを使用して視覚化しています。画像はpdf形式で保存されます。matplotlibの軸の内容をラスタライズする(フレーム、ラベルではない)

高密度のメッシュでは、単純なアプローチではファイルが大きすぎて、実用的にはあまりにも集中的にレンダリングされるという問題が発生します。

これらのメッシュでは、各要素をポリゴンとしてプロットするのは実際には意味がありません。画像をjpgまたはpngとして保存するときと同様に、簡単にラスタライズすることができます。しかし、印刷のためには、鮮明なフレーム、ラベル、注釈を保持したいと考えています。

matplotlibでこの種のハイブリッドラスタライズを実現できるかどうかは誰にも分かりますか?

私はimshowとpolycollectionをバイパスするソリューションを考えることができますが、私はmatplotlibの組み込みコンポーネントを使うことを好むでしょう。

ご協力いただきありがとうございます。

答えて

9

rasterized=Trueキーワードをコレクションコンストラクタに渡すだけです。例:これは(あなたがそれの上に通常のプロットをした場合、例えば、それはデフォルトでベクトル化されるだろう)、その要素を選択的にラスタライズすることができます

col = collections.PolyCollection(<arguments>, rasterized=True) 

plotまたはimshowのようなコマンドのほとんどは、rasterizedというキーワードを使用することもできます。

fig = plt.figure() 
a = fig.add_subplot(1,1,1, rasterized=True) 

を(しかし、これは質問で述べたように、あなたが望むものではありません。)

+0

うわー、そのシンプル:1は(ラベルや注釈を含む)図全体をラスタライズしたい場合、これはそれを行うだろう。私は私のグーグル・スキルを今心配しています。しかし、この答えには本当にありがとう、これは私が望んでいたものです! – gertjan

+0

これは素晴らしいことです!どのようにしてラスタライズのdpiを制御するのか?それは私が 'figure'と' savefig'に渡すdpiを無視しているようです... – weronika

+0

@weronika、 'figure'や' savefig'のdpiがうまくいかない場合、私はそれをどのように変更するのか本当に分かりません。 'collections'はアーティストの' allow_rasterization'デコレータを使用しているようですが、一見してdpiを設定する方法はわかりませんでした。 – tiago

関連する問題