2012-02-13 25 views
8

Matplotlib ile bir vektör grafiği oluşturmak istiyorum. Çok uğraştım - ama çıktı raster bir görüntüdür. İşte ne kullanın: nihayetmatplotlib: vektörel çizim oluşturma

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

ve:

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

Ben ps için ihracat bir vektör görüntüsünü verir bulduk ama eps sorun olmaya devam etmektedir.

+4

Gerçek çağrıların "plt" için bir örneğini (gerekirse, bazı verileri oluştur) verebilir misiniz? Bu başkalarının katkıda bulunmasına yardımcı olacaktır. – Yann

+1

Tanımladığınız sorunun önerdiğinizden ve EPS çıktısının gerçekten tam bir vektör yorumlama olduğundan emindim. Zavallı bir görüntüleyici aracılığıyla eps'ya bakıyor olmanız olabilir - bu uygulamayı eps görüntülemek için hangi uygulamada kullanıyorsunuz? – pelson

+0

'plt.savefig ('some_name.eps', bbox_inches = 'tight')' sistemimde bir vektörel çizim oluşturuyor. – mab

cevap

1

Pdf veya svg olarak dışa aktarmayı http://neuroscience.telenczuk.pl/?p=331 numaralı belgede açıklamayı deneyin. Eps'ya ihtiyacınız varsa pdf2ps komutu harika çalışıyor. Eğer örneğin çıkış biçimi olarak emf dosyaları gerekiyorsa

from matplotlib import pyplot as plt 

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

Ben şu kodu kullanın Bu çözümü uygulayabilirsiniz ms word/powerpoint içine yüksek kaliteli araziler eklemek ve dönüştürücü olarak inkscape kullanmak isteyen için:

plt.plot([1,2], [4,5]) 
fig = plt.gcf() 
plot_as_emf(fig, filename="C:/test.emf") 
: Eğer basit bir örnek çalıştırabilirsiniz Bu işlevi test etmek için

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)