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 не существует известного обходного пути.