修复MATLAB标题图中的多余空间

问题描述 投票:1回答:1

我正在为论文写结果,这包括使用MATLAB代码为LaTeX文档生成图形。我通过对数据进行图形处理来完成此操作,然后使用print命令将其保存在EPS文件中。

问题在于,您可以在此处看到MATLAB窗口中的图是正确的:

“

但是当我在LaTeX(Lyx)中编译文档时,结果是这样的:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ZSFJWUi5wbmcifQ==” alt屏幕快照,如图所示>。

如您所见,“ iL m”标题中有多余的空格。当我在不同信号的标签中使用LaTeX代码时,也会发生同样的情况。

在网络上搜索,我尝试了以下命令:

set(groot,'DefaultTextInterpreter','latex');

但是就像我在代码中写的那样,只是打印“ iL_m”。如何使EPS文件中的间距一致?

这是我使用的代码:

clear h n
figure(1)
h(1) = plot(iLmVal.time,iLmVal.data(:,2),'LineWidth',1,'color','k','DisplayName','Modelo');
hold on
h(2) = plot(iLmVal.time,iLmVal.data(:,4),'LineWidth',1,'color','r','DisplayName','Circuito');
legend(h,'Location','southeast'),...
axis([0 0.06 -18 27]),title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times-Roman'),...
set(gca,'Color','white');
set(gca,'XTick',0:0.005:0.06),...
    set(gca,'XTickLabel',0:5:60,'FontSize',20,'FontName', 'Times-Roman','XMinorGrid','on'),...
    xlabel('Tiempo [ms]','FontSize',20,'FontName', 'Times-Roman'),...
set(gca,'YTick',-18:4:28),...
    set(gca,'YTickLabel',-18:4:28,'FontSize',20,'FontName', 'Times-Roman','YMinorGrid','on'),...
    ylabel('Corriente [A]','FontSize',20,'FontName', 'Times-Roman'),...
    n = gca;
    n.YAxis.MinorTick = 'on'; n.YAxis.MinorTickValues = -18:1:28;
    n.XAxis.MinorTick = 'on'; n.XAxis.MinorTickValues = 0:0.0025:0.07;
    grid on; hold off

我正在使用MATLAB R2018a和Lyx 2.3.2-2。另外,通过PNG打印不会出现此问题,但是质量和分辨率非常差。

matlab latex matlab-figure eps
1个回答
0
投票

我不认为这与LyX有关,您应该在导出的EPS文件中看到此问题。您可以使用其他字体来解决此问题。

您可以在MATLAB的图形外观中看到,标题使用的是Sans-serif字体(绝对不是'Times-Roman'),MATLAB无法识别'Times-Roman'字体,渲染的替代方法。该替代字体用于确定下标的位置,下标的位置由MATLAB独立于主文本进行定位。但是,此字体名称被写入EPS文件。在其他程序中渲染EPS文件时,“ Times-Roman”字体会被识别并用于渲染文本。因为此字体与MATLAB使用的度量标准不同,所以下标的位置不正确。

当打​​印到PNG时,MATLAB创建一个位图,因此不会发生此问题。


在我的计算机(macOS)上,愚弄在屏幕上显示正确的表示形式:

title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times')
title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times-Roman')
title("Corriente de magnetización iL_m",'FontSize',20,'FontName','TimesRoman')
title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times New Roman')

以下内容不是:

title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times Roman')

在不同的计算机上,可以使用不同的字体名称。使用计算机上可以识别的名称。最好的选择是“时间”,它是此字体的PostScript名称,应该在任何地方都可以识别。


或者,使用the export_fig utility on the File Exchange。这是将MATLAB图形导出到EPS的绝佳工具。它不仅可以修复字体,还可以进行许多其他小的调整,以改善图形的外观。

© www.soinside.com 2019 - 2024. All rights reserved.