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
.