matplotlib: создание векторного графика - PullRequest
12 голосов
/ 13 февраля 2012

Я хочу создать векторный график с помощью matplotlib. Я очень старался - но на выходе получается растровое изображение. Вот что я использую:

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

и наконец:

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

Я обнаружил, что экспорт в ps дает векторное изображение, но проблема с eps остается.

Ответы [ 3 ]

8 голосов
/ 05 декабря 2016

Если вам нужны EMF-файлы в качестве выходного формата, например, Чтобы вставить высококачественные графики в MS Word / 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")
6 голосов
/ 17 октября 2014

Я использую следующий код:

from matplotlib import pyplot as plt

fig, ax = plt.subplots() # or 
fig.savefig('filename.eps', format='eps')
1 голос
/ 17 апреля 2014

Попробуйте экспортировать в формате PDF или SVG, как описано в http://neuroscience.telenczuk.pl/?p=331 Если вам нужен eps, команда pdf2ps работает отлично.

...