Я столкнулся с проблемой вывода графики низкого качества в Matlab, похожей на этот вопрос, но приведенные там решения не сработали для меня. Использование Matlab 2014b или 2015a приводит к той же проблеме.
Создайте примерную фигуру с помощью следующих команд:
a = rand(200, 1)
b = .1 * rand(200, 1) + .4
plot([a b])
patch([1 100 100 1], [0 0 1 1], [-.1, -1., -.1, -.1], .1*ones(4, 1))
export_fig('test4.pdf')
Полученное изображение имеет неровные соединения линий и линии, которые перекрываются непоследовательным образом - иногда синяя линия находится впереди, иногда - оранжевая линия.
Обратите внимание, что проблема возникает только в том случае, если Z-данные включены в команду исправления.
Я попытался решить эту проблему так же, как было предложено в вопросе, указанном выше, но предоставленная процедура не сработала (она не внесла изменений в файл .eps). Я вручную отредактировал файл .eps, чтобы скруглить линии, изменив строку
/J { setlinecap } def
to
/J { 1 setlinecap } def
Однако несоответствие того, какая линия была на переднем плане, сохранялось.
Использование собственного вывода из Matlab приводит к той же проблеме, что и использование export_fig
. Соединения строк можно исправить аналогичным образом, отредактировав файл .eps, на этот раз заменив любые строки 2 setlinecap
на 1 setlinecap
, но проблема с порядком строк осталась.
Затем я ищу ответ на один из двух вопросов:
- Есть ли способ вывести изображение векторной графики из Matlab, чтобы избежать обеих этих проблем?
- Есть ли способ исправить проблему с порядком строк путем пост-обработки файла, выводимого Matlab, аналогично тому, как можно исправить проблему с соединением строк?
export_fig
? Приводят ли встроенные функции вывода Matlab к тем же проблемам? - person David   schedule 30.04.2015export_fig
, похоже, создает более читаемый файл .eps, и мне нравится автоматический размер страницы, который он делает, но кроме этого у меня нет причин предпочитать его встроенным функциям. - person David Kelley   schedule 30.04.2015