Я использую еще недокументированный HG2-Update для создания своего Графики MATLAB, потому что они просто выглядят намного лучше.

введите описание изображения здесь введите описание изображения здесь (Источник: Яир Альтман)

На самом деле, используя текущую версию Release 2013b , он работает довольно хорошо, и особых проблем не возникает. За исключением того, что нужно экспортировать фигуры как векторную графику (средство визуализации: '-painters'), особенно как pdf .

Я использую команды:

saveas(gcf,'test.pdf','pdf')

Или

print(gcf,'test.pdf','-dpdf')

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

Но я бы очень хотел остаться с HG2 и по-прежнему хотел бы использовать векторную графику . Есть ли какое-нибудь решение или обходной путь?

4
thewaywewalk 10 Авг 2014 в 17:27

2 ответа

Лучший ответ

Экспорт векторной графики с помощью еще не официального HG2-Update - это довольно сложная задача. проблема. .pdf -экспорт все еще полностью провален. Хорошо работает .svg -export, за исключением того, что граничный блок установлен неправильно.

Долгий обходной путь: Сохраните график с помощью '-dsvg' (print - команда) или 'svg' (saveas - команда) как векторную графику, откройте файл в приложении с открытым исходным кодом Inkscape и снова сохраните как .pdf с помощью Экспорт область рисует установлен флажок.

Довольно сложно, поэтому я нашел способ сделать это через командную строку прямо из Matlab (Inkscape все еще требуется!):

filename = 'test';
inkscapepath = '"C:\Program Files (x86)\Inkscape\inkscape.exe"';

%// save as .svg
saveas(gcf,filename,'svg')
%// open and save with "export-area-drawing" set via command line
system( [inkscapepath ' ' filename ...
         '.svg --export-area-drawing --export-pdf=' filename '.pdf'])

Это займет некоторое время, но пока работает без каких-либо известных проблем.

Затем дополнительно удалите svg-файл:

delete([filename '.svg'])
2
thewaywewalk 10 Авг 2014 в 13:35

У меня была та же проблема, и я использовал обходной путь из thewaywalk. Теперь я обнаружил, что функция MATLAB "hgexport" работает под HG2 (в R2014a).

Проблема по-прежнему заключалась в размере бумаги. Я хочу использовать одинаковый размер для всех графиков с как можно меньшим количеством белой рамки. Здесь вам нужно установить два размера:

Размер бумаги устанавливается с помощью set(gcf,'PaperSize',[width height]), а размер вашей диаграммы устанавливается с помощью стилей экспорта. Они задаются в «Настройках экспорта» или в командной строке:

exp_style=hgexport('readstyle','default');
exp_style.Width = 'width';
exp_style.Height = 'height';
exp_style.Renderer = 'painters';

Теперь вы можете экспортировать свой pdf:

hgexport(gcf,'pdfname',exp_style,'Format','pdf');

PS: В HG2 вы также можете использовать латекс для меток:

set(gca,'TickLabelInterpreter','latex');
1
Leonard Becker 27 Янв 2015 в 15:06