MATLAB: края патчей, видимые после экспорта в виде векторной графики

Патчи в Matlab склеены из отдельных треугольников. Их края обычно не видны, но когда я экспортирую рисунок в векторном формате, они четко видны (отображается не вся картинка, а только увеличенная часть)

края отдельных треугольников

Код для генерации этого MWE был:

xx = [0:1:100, 100:-1:0];
yy = [zeros(1,101), ones(1,101)];
p1 = patch(xx,yy,'b'); 
print('testPatch','-dpdf','-painters')

Альтернативная функция fill ведет себя так же. Есть ли способ избежать этой ошибки или мне приходится жить с растровыми изображениями в этом случае?

РЕДАКТИРОВАТЬ: Один из обходных путей заключается в штриховке области вместо ее заполнения. Это, очевидно, не всегда возможно, но в моем случае это сработало, и я мог бы придерживаться векторной графики. Соответствующее представление FEX: http://www.mathworks.com/matlabcentral/fileexchange/30733-hatchfill

3 ответа

Вывод разбросанной векторной графики (срезы, треугольники, прямоугольники вместо объединенных объектов) является одной из секретных функций после обновления графического движка R2014b.

Я смог соединить эти треугольники вместе со следующим скриптом на python, который использует системный вызов Inkscape https://github.com/Sbte/fix_matlab_eps. Но это обходной путь, который работает для простых участков. Это не решение.

Либо используйте растровый вывод, либо сохраните свои данные и используйте программное обеспечение python matplot.

plot2svg позволяет создавать файлы векторной графики (SVG) с несломанными патчами. Я бы также следил за обновлениями export_fig, кажется, что Яир Альтман работает над этой проблемой. Не задержал бы дыхание для решения от Mathworks.

Это досадная проблема. Единственный ответ, который я видел от Matlab, заключается в том, что он связан со сглаживанием в вашем средстве просмотра PDF. Это подробно обсуждается здесь:https://www.mathworks.com/matlabcentral/answers/162257-problem-with-patch-graphics-in-2014b-splits-in-two-along-diagonal

Mathworks рекомендует изменить параметры программы просмотра PDF, как описано здесь:https://www.stata.com/support/faqs/graphics/line-artifacts-in-filled-contour-plot/ Если ссылка разрывается, вот ключевая информация: Вот инструкции по отключению сглаживания в некоторых популярных средствах просмотра PostScript и PDF:

  • GSView: в меню «Мультимедиа»> «Параметры отображения» измените «Графика Альфа» на 1 бит.
  • Adobe Reader 9 и 10: в меню Adobe Reader> Настройки ... выберите панель «Отображение страницы», снимите флажок «Использовать ускорение 2D-графики» и снимите флажок «Сглаживание линий».
  • Adobe Illustrator: в меню «Illustrator»> «Установки ...»> «Общее» снимите флажок «Сглаженное изображение».
  • Предварительный просмотр Mac: в меню «Просмотр»> «Настройки ...» выберите панель «PDF» и снимите флажок «Сглаживание текста и штриховой графики».
  • FoxIt Reader: «Файл»> «Настройки»> «Отображение страницы», снимите флажок «сглаживание линий».

Это работает для меня для большинства целей, но, как сказал один из участников обсуждения Mathworks, мы не можем ожидать, что наши коллеги изменят настройки своего средства просмотра PDF для просмотра наших графиков.

Это похоже на жизнеспособный обходной путь (использование сценария с Adobe Illustrator или Inkscape+python для присоединения к исправлениям):https://github.com/dfarrel1/fix_matlab_vector_graphics

Другие вопросы по тегам