Как изменить шрифт в функции Matlab «exportgraphics» в векторной графике PDF - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь экспортировать рисунок Matlab как векторную графику PDF c, используя функцию экспорта "Matlab", как это предлагается в документации Matlab. Для справки см .:

https://www.mathworks.com/help/matlab/ref/exportgraphics.html

Все отлично работает. Однако шрифт, используемый для заголовка, меток x и y, и тиков, не совпадает с тем, который используется на рисунке Matlab, который появляется после выполнения кода. Он меняется на шрифт «времена», который не соответствует моей цели. Теперь я хотел бы указать шрифт для всех трех: заголовок, метки x и y, а также галочки (цифры). Делать это отдельно не обязательно, но необязательно. У кого-нибудь есть предложение?

Как вы можете видеть в моем коде, я уже пытался повлиять на шрифт, указав его (например, в команде "ylabel").

figure
plot(Zeit1,Temperatur1,'LineWidth',2)
grid on
title('Temperatur-Messprogramm für Messreihe 1')
xlabel('Zeit [min]')
ylabel('Temperatur [°C]', 'FontName', 'Helvetica')
xlim([-5 150])
ylim([-5 405])
set(gca,'FontSize',30)
exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_1.jpg','Resolution',600)
exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_1.pdf','Resolution',600,'ContentType','vector')

Это влияет на шрифт, отображаемый на рисунке Matlab, однако ничего не меняет для программно экспортируемой векторной графики PDF c. Этот остается в шрифте «Times», независимо от того, что я когда-либо делаю. Попытка изменить шрифт по умолчанию (set(0,'DefaultAxesFontName','scrbook')) для всех цифр, как предложено другим пользователем, также не приводит к желаемому эффекту.

Графика c, созданная

exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_1.jpg','Resolution',600)

, написана правильным шрифтом, но обычным изображением. Графика c, созданная

exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_1.pdf','Resolution',600,'ContentType','vector')

, имеет неправильный шрифт, но в желаемом формате PDF векторной графики c.

Спасибо за вашу поддержку!

С уважением, Тимон

  • Это сообщение было отредактировано после того, как выяснилось, что "times" является шрифтом по умолчанию для векторной графики PDF c и, следовательно, является плохим тестовым методом, чтобы выяснить, можно изменить шрифт.

1 Ответ

1 голос
/ 27 апреля 2020

Итак, подумав некоторое время, я отказался от идеи использования функции exportgraphics. Возможно, в нем есть ошибка, поскольку она была впервые представлена ​​в Matlab 2020a. Я продолжил использовать функцию с именем matlab2tikz, которую можно скачать здесь:

https://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz

Эта функция позволяет сохранить рисунок в виде векторной графики. c и включите его в LaTeX с помощью команды \ input (см. Код в конце этого поста). Используемый шрифт будет тем, который используется по умолчанию в LaTeX (современный компьютерный романс), чего я в конечном итоге и хотел достичь со всем этим. Подробности см .:

https://www.youtube.com/watch?v=dg7z3bs-eA8

(для понимания видео не нужно понимать немецкий язык)

Окончательный код Matlab, который я использую это:

gomatlab2tikz = true

figure('units','centimeters','position',[0 0 15.5 10.333])
plot(Zeit3,Temperatur3,'LineWidth',2)
grid on
title('Temperatur-Messprogramm für Messreihe 3')
xlabel('Zeit [min]') %Zeit [min]
ylabel('Temperatur [°C]') %Temperatur [°C]
xlim([0 150])
ylim([0 400])
xticks(linspace(0,150,16))
yticks(linspace(0,400,21))
set(gca,'FontSize',11)
if gosave == true
    exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_3.jpg','Resolution',150)
    exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_3.pdf','Resolution',150,'ContentType','vector')
end
if gomatlab2tikz == true
    matlab2tikz('Temperatur_Messprogramm_Messreihe_3.tikz')
end

По крайней мере, в моем случае цифра, показанная Matlab, не должна корректировать размер в сантиметрах. Однако размеры рисунка будут правильными, если импортировать файл .tikz с помощью команды \ input в LaTeX. Для дальнейшего улучшения раскладки можно использовать команду \ resizebox.

\begin{figure}[h]
        \centering
         \resizebox{1.00\linewidth}{!}{\input{Figures/Versuche/Temperatur_Messprogramm_Messreihe_1.tikz}}
\caption{Temperatur Messprogramm Messreihe 1}
\label{Temperatur_Messprogramm_Messreihe_1}
\end{figure}
...