如何在 PDF 矢量图中更改 Matlab 的 "exportgraphics" 函数中的字体

How to Change the Font in Matlab's "exportgraphics" Function in a PDF Vector Graphic

我正在尝试按照 Matlab 文档中的建议,使用 Matlab 的 "exportgraphics" 函数将 Matlab 图导出为 PDF 矢量图形。参考:

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

一切正常。但是,用于标题、x 和 y 标签以及刻度的字体与 运行 代码后弹出的 Matlab 图形中使用的字体不匹配。它更改为不符合我的目的的字体 "times"。现在我想为所有三个指定字体:标题、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 矢量图形没有任何改变。无论我做什么,这个字体都保持 "Times"。 尝试按照其他用户的建议更改所有数字的默认字体 (set(0,'DefaultAxesFontName','scrbook')) 也不会导致想要的效果。

创建的图形
exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_1.jpg','Resolution',600)

字体正确,但图像正常。

创建的图形
exportgraphics(gcf,'Temperatur_Messprogramm_Messreihe_1.pdf','Resolution',600,'ContentType','vector')

字体错误,但采用所需的 PDF 矢量图形格式。

感谢您的支持!

谨致问候, 丁满

所以在考虑了一段时间之后,我放弃了使用 exportgraphics 函数的想法。可能它确实有一个错误,因为它是在 Matlab 2020a 中首次引入的。我继续使用一个名为 matlab2tikz 的函数,可以在这里下载:

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

此函数可以将图形保存为矢量图形,并使用 \input 命令将其包含到 LaTeX 中(参见本 post 末尾的代码)。使用的字体将是 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 显示的图形不必以厘米为单位校正尺寸。然而,如果通过 \input 命令将 .tikz 文件导入 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}