MATLAB и высококачественные рисунки EPS

Я хочу экспортировать свой участок 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: Моя учетная запись хостинга в университете истекла, поэтому вы больше не можете просматривать эту цифру. Достаточно сказать, что он показал плохую структуру растрового стиля в высококачественных красивых линиях осей, тиках и ярлыках.

Ответы

Ответ 1

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

изменить: Примеры аналогичны случаю EPS, как объяснено с помощью, например, print:

saveas(gcf,'filename.pdf')

или

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

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

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

Ответ 2

Я думал, что поделился бы тем, что у меня было, и как я его преодолел...

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

Crop of output eps

Я сделал вывод eps с помощью print(gcf,'-depsc2','filename.eps'). Этот eps настолько РАСПРОСТРАНЕН. Это заставляет меня сердиться на Матлаб. Затем у меня была мозговая волна - возможно, мой рендерер по умолчанию zbuffer мешает процессу сохранения изображения. Итак, добавив строку:

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

и запустить команду печати, как и прежде, вот вывод:

Crop of second output eps

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

Ответ 3

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

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

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

Ответ 4

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

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