MATLAB и высококачественные EPS рисунки - PullRequest
15 голосов
/ 26 ноября 2011

Я хочу экспортировать свой участок MATLAB как высококачественную фигуру. В частности, я хотел бы сохранить его как векторный формат файла, такой как EPS или SVG.

I have tried print and saveas commands:
saveas(h,'myFileName','epsc2');
print('-r150','-depsc2', 'myFilename');

Во всех случаях это приводит к некачественным частям графика, хотя метки оси действительно являются векторными. Почему MatLab делает ужасный рендеринг перед тем, как поместить его в EPS?

Пример некачественного участка здесь: http://users.ox.ac.uk/~pemb2372/myFileName.eps

Edit: Стоит также отметить, что если вы используете Mac для просмотра EPS-файла из Matlab, приложение «Предварительный просмотр» может отображать растровое содержимое внутреннего графика низкого качества, оставляя ось и метки векторизованными и высокого качества. Это вводит в заблуждение, но когда вы открываете указанный EPS-файл, например, в Inkscape, качество на самом деле векторное и довольно высокое.

Редактировать 2: Срок действия моей учетной записи хостинга в университете истек, поэтому вы больше не можете видеть эту цифру. Достаточно сказать, что он демонстрировал некачественный растровый сюжет с высококачественными красивыми линиями, галочками и метками.

Ответы [ 4 ]

12 голосов
/ 08 мая 2013

Я думал, что поделюсь своей проблемой, и как я ее преодолел ...

Я получал ужасные результаты, потому что у меня был неправильный рендерер, установленный по умолчанию. В моем startup.m у меня был включен рендерер zbuffer. Это пример вывода eps.

Crop of output eps

Я сделал вывод eps с: print(gcf,'-depsc2','filename.eps'). Этот EPS так ЯВНО растеризован. Это злит меня на Matlab. Затем у меня возникла мозговая волна - возможно, мой рендерер по умолчанию zbuffer мешает процессу сохранения изображения. Итак, добавив строку:

set(gcf,'renderer','painters')

и, выполнив команду печати, как и раньше, выведите:

Crop of second output eps

Обратите внимание, что я только что сделал скриншоты выходных файлов eps на 100%. И я могу подтвердить, что второе изображение на самом деле векторное. Вот хороший вопрос / объяснение по выбору Renderers в MATLAB.

11 голосов
/ 01 декабря 2011

Функция export_fig при обмене файлами MATLAB является достаточно надежным способом точного экспорта рисунков в eps и pdf (а также в растровые форматы) в MATLAB.

Функция plot2svg , также из обмена файлами, позволяет экспортировать в формате SVG. Он обеспечивает некоторые дополнительные преимущества, такие как возможность экспорта полупрозрачных объектов-патчей в векторном формате.

Сравнение методов экспорта приведено в этом блоге .

10 голосов
/ 27 ноября 2011

Matlab может экспортировать в pdf с лучшим качеством, чем EPS, но со своими собственными предостережениями по настройке приличных полей и размеров шрифта.

edit : Примеры аналогичны описанному случаю EPSнапример, print:

saveas(gcf,'filename.pdf')

или

print('-dpdf','filename.pdf')

Возможно, вы захотите взглянуть на PaperSize, PaperPosition и PaperUnits свойства вашей фигуры (с помощью функций set и get).

edit : Другой вариант - использовать одну из функций, доступных в FileExchange , например, указанные @ user664303 ниже.Мой личный фаворит для использования с LaTeX - matlab2tikz, для которого последняя версия может быть получена от GitHub .Я думаю, что вместе с библиотекой TikZ external это дает некоторые из самых хороших графиков.Возможно, также стоит упомянуть, что я активно участвую в проекте matlab2tikz с 2012 года.

0 голосов
/ 18 мая 2015

Я всегда получаю последние графики (те, которые должны быть вставлены в статьи и публикации) библиотекой matplotlib из python.

Вы можете сделать ставку на удивительное качество сгенерированных сюжетов в форматах .pdf и .eps.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...