Matlab Graphics: неровные линии на выходе

Я сталкиваюсь с проблемой некачественной графики в 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

в

/J { 1 setlinecap } def

Однако, непоследовательность того, какая линия была на переднем плане, сохранялась.

Использование собственного вывода Matlab приводит к той же проблеме, что и использование export_fig, Соединения строк можно аналогичным образом исправить, отредактировав файл.eps, на этот раз заменив любые строки 2 setlinecap с 1 setlinecap, но вопрос о порядке очередности остался.

Я ищу ответ на один из двух вопросов:

  • Есть ли способ вывести векторное графическое изображение из Matlab, которое позволяет избежать обеих этих проблем?
  • Есть ли способ исправить проблему упорядочения строк, выполнив постобработку выходного файла Matlab, аналогично тому, как можно решить проблему объединения строк?

1 ответ

Решение

Эта проблема решена в Matlab 2015b. Для 2014b или 2015a не существует известного обходного пути.

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