2016-03-30 2 views
0

Я создаю несколько графиков в matlab, используя plot и surf/mesh. Когда я пытаюсь сохранить их как SVG или PDF (из меню сохранения окна рисунка), я получаю хорошую векторную графику для plot, но не векторную графику, встроенную в SVG или PDF для surf или mesh.Цветовые карты Matlab для SVG или PDF

Любая идея о том, как исправить эту проблему?

+0

вы пробовали другие методы экспорта ? Я использую 'export_fig'. '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' '' '' '' '' '' '' '' '', Может быть, это вызвано тем, как каждый метод экспорта имеет дело с (возможными) цветовыми оттенками. Инструмент по умолчанию для Matlab, вероятно, растрирует фигуру, а затем сохраняет ее как заданный формат. 'export_fig', вероятно, векторизовать фигуру (сегментирует все объекты для частей с одним цветом) и сохраняет ее. – Crowley

+0

Я попробую. С моим методом даже оси становятся растеризованными при работе с фигурой 'surf' или' mesh'. – Andrestand

+0

Я не знаю, что вы имеете в виду с 'export_fig', не могли бы вы использовать его в кратком примере? Я уже пробовал использовать 'saveas (gcf, 'picture', 'pdf')' и 'saveas (gcf, 'picture', 'svg')' с похожими не-векторными результатами ... – Andrestand

ответ

0

Я не знаю причины, но я закончил выяснять, где должна быть проблема.

Я использую mesh, который произвел что-то вроде (сюжет и Colorbar): enter image description here

Пытаюсь с surf; shading interp или pcolor генерируются огромные файлы, так что я избегал их.

Опции Я искал очень похожа на то, что вы получаете при использовании imagesc вместо mesh: enter image description here

Это не совершенно, вы можете увидеть некоторые странные тонкие белые диагонали из-за оси или Colorbar основных коробков : enter image description here но я получаю достаточно качественных векторных файлов.

Кроме того, если вы используете mesh и imagesc в нескольких subplots в том же figure, вы получаете также растровое изображение для imagesc встроенной в Pdf или SVG файла: enter image description here

+0

Вы можете скрыть белые диагонали, разгруппировав график несколько раз в inkScape и немного перемещаясь по двум частям, в которых разделена карта. Подробнее о проблеме здесь: http: // es.mathworks.com/matlabcentral/answers/162257-problem-with-patch-graphics-in-2014b-splits-in-two-along-diagonal – Andrestand

2

export_fig - макрос для экспорта фигур в различные форматы файлов. С установленным GhostScript он может напрямую экспортироваться в формате pdf. Его можно скачать File Exchange.

Использование

export_fig('foo','-pdf','-nocrop') 

производит этот результат (Скриншот из Adobe Acrobat):

Zoomed 100% Zoomed In

Если присмотреться, то можно увидеть ребра триангуляции (линии " отсутствующие пиксели ") в результате surf участок и сегментация contour участок на втором снимке.

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

Если pdf экспортируется в растровое изображение, скажем png, эти «отсутствующие» пиксели исчезают и выполняют «сквозной» эффект с первого изображения. См (Adobe Acrobat 9 Pro; чересстрочная: Adam7, Фильтр: адаптивный) Разрешение

300 точек/дюйм (изображение с разрешением 2400 пикселей/дюйм слишком большой) Разрешение Zomm100%

2400 точек/дюйм Zoom1 Zoom2

Участок создан по коду answer.

+0

Ницца! Теперь я задаюсь вопросом, будет ли возможен промежуточный подход, где 'surf' или' mesh' растеризуются, но оси, метки, легенда ... являются векторными. Во всяком случае, некоторое время назад мне удалось сделать то, что я искал, но с помощью GNUplot было бы здорово добиться этого также в Matlab ... (http://gredos.usal.es/jspui/bitstream/10366/ 123970/3/TG_GarciaAndres.pdf, стр.28) – Andrestand

+0

Возможно, «растрированный» экспорт 'surf' на' saveas', «векторизованный» экспорт остальной фигуры на 'export_fig' и объединение их друг с другом в другом месте способ достичь этого. Я еще не играл с рендерингом, так что с чем-то можно было поиграть. Может быть, ... – Crowley

+0

:(Я хочу верить, что Matlab имеет какой-то способ создать приятные 2D-векторные графические карты. Спасибо! – Andrestand

Смежные вопросы