2012-02-13 2 views
8

matplotlibでベクトルプロットを生成したい。私は頑張った - しかし、出力はラスターイメージです。ここで私が使用しているものです:最後にmatplotlib:ベクトルプロットを生成する

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 

と:

myfig.savefig('myfig.eps', format='eps') 

私はpsへの輸出は、ベクトル画像を与えることがわかってきましたが、epsの問題は残っています。

+4

'plt'への実際の呼び出しの例を挙げることができますか?これは他人の貢献に役立ちます。 – Yann

+1

私はあなたが説明している問題はあなたが示唆しているとおりではなく、実際にはepsの出力が完全な本格的なベクトルレンディションであると確信しています。貧弱なビューアを使ってepsを見ているかもしれません - どのアプリケーションでepsを表示していますか? – pelson

+0

'plt.savefig( 'some_name.eps'、bbox_inches = 'tight')'は私のシステム上でベクトル化されたプロットを生成します。 – mab

答えて

1

http://neuroscience.telenczuk.pl/?p=331 に記載されているようにpdfまたはsvgとしてエクスポートしてください。pdps2psコマンドがうまく動作するようにするには、pdps2psコマンドを使用します。

私は次のコードを使用
5

:あなたは、出力形式としてEMFファイルが必要な場合は、例えば、

from matplotlib import pyplot as plt 

fig, ax = plt.subplots() # or 
fig.savefig('filename.eps', format='eps') 
3

をあなたはこのソリューションを適用することができ、MSワード/ PowerPointに高品質のプロットを挿入すると、あなたは、コンバータとしてInkscapeのを使用して喜んでいるします

plt.plot([1,2], [4,5]) 
fig = plt.gcf() 
plot_as_emf(fig, filename="C:/test.emf") 
:あなたは簡単な例を実行することができ、この機能をテストするために

from matplotlib import pyplot as plt 
import subprocess, os 

def plot_as_emf(figure, **kwargs): 
    inkscape_path = kwargs.get('inkscape', "C://Program Files//Inkscape//inkscape.exe") 
    filepath = kwargs.get('filename', None) 

    if filepath is not None: 
     path, filename = os.path.split(filepath) 
     filename, extension = os.path.splitext(filename) 

     svg_filepath = os.path.join(path, filename+'.svg') 
     emf_filepath = os.path.join(path, filename+'.emf') 

     figure.savefig(svg_filepath, format='svg') 

     subprocess.call([inkscape_path, svg_filepath, '--export-emf', emf_filepath]) 
     os.remove(svg_filepath) 

関連する問題