Matplotlibでベクトルプロットを生成したいと思います。一生懸命試しましたが、出力はラスター画像です。これが私が使うものです:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
そして最後に:
myfig.savefig('myfig.eps', format='eps')
ps
にエクスポートするとベクター画像が得られることがわかりましたが、eps
の問題は残っています。
出力形式としてemfファイルが必要な場合(例:高品質のプロットをMSWord/PowerPointに挿入し、コンバーターとしてinkscapeを使用する場合は、次のソリューションを適用できます。
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)
この関数をテストするために、簡単な例を実行できます。
plt.plot([1,2], [4,5])
fig = plt.gcf()
plot_as_emf(fig, filename="C:/test.emf")
私は次のコードを使用します:
from matplotlib import pyplot as plt
fig, ax = plt.subplots() # or
fig.savefig('filename.eps', format='eps')
http://neuroscience.telenczuk.pl/?p=331 で説明されているように、pdfまたはsvgとしてエクスポートしてみてください。epsが必要な場合は、pdf2psコマンドが最適です。