2012-02-13 7 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로 내보내기를 시도하십시오. eps가 필요하면 pdf2ps 명령이 효과적입니다. 당신은 예를 들어, 출력 형식, 같은 확장 된 메타 파일이 필요하면

from matplotlib import pyplot as plt 

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

나는 다음과 같은 코드를 사용 이 솔루션을 적용 할 수 있습니다 MS 워드/파워 포인트로 고품질의 플롯을 삽입하면 컨버터로 잉크 스케이프를 사용하고자합니다 :

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) 

관련 문제