matlab - 当图形保存为 PDF 时,为什么 Matlab 使用 Latex 在图例中放置文本空间?

标签 matlab pdf latex matlab-figure legend

我试图在 Matlab 图形中添加一个图例,其中包含 Latex 中的一个符号。当我绘制图形时,图例看起来不错。但是,当我将图形导出为 PDF 时,图例会在其中放入空格。我不知道为什么会这样。示例代码如下:

set(groot,'defaultLineLineWidth',2,'defaultAxesFontSize',...
    12,'defaultAxesFontName','timesnewroman',...
    'defaulttextinterpreter','latex')
x0 = 8;
y0 = 5;
width = 5;
height = 4;
kappa1 = 0.1;
kappa2 = 0.5;
f = linspace(0,2*pi,1000);
y1 = sin(f+kappa1*f.^2);
y2 = sin(f+kappa2*f.^2);

figure(1)
hold on
plot(f,y1,'k')
plot(f,y2,'b')
xlabel('Frequency (MHz)')
ylabel('Amplitude')
legend(strcat('\kappa = 0.1 MHz/','\mu','s'),...
    strcat('\kappa = 0.5 MHz/','\mu','s'))
grid on;
set(gcf,'units','inches','Position',[x0,y0,width,height],...
    'PaperPositionMode','Auto','PaperUnits','Inches',...
    'PaperSize',[width, height]);
saveas(gcf,'legendtest.pdf')

当我将文件保存为 PDF 时,似乎发生了错误。它保存为 JPG 就好了。下面是我得到的两张图片。 jpg 是:

testlegendjpg

但我得到的 PDF 是:

enter image description here

我在运行 OS 10.12.5 的 Mac 上使用 Matlab 版本 R2017a。在此先感谢您的帮助!

最佳答案

这是一个已知错误。查看bug report根据它影响从 R2014b 到 R2017a 的版本。该错误报告中还建议了一种解决方法,即通过将 Renderer 设置为 opengl 来生成 pdf 文件,即

set(gcf,'Renderer','opengl');

但是随后生成的 pdf 文件包含像素图形而不是矢量图形。


更好的做法是使用各自的 unicode 值来生成矢量图形。即

legend([char(954), ' = 0.1 MHz/',char(956),'s'],...
    [char(954), ' = 15 MHz/',char(956),'s']); %char(954) equals 'κ', char(956) equals 'μ'

如果你想使用 italic 字符,也可以使用 unicode 字符。

legend([char([55349,57093]), ' = 0.1 MHz/',char([55349,57095]),'s'],...
    [char([55349,57093]), ' = 15 MHz/',char([55349,57095]),'s']); 
%char([55349,57093]) equals '𝜅' (italic κ), char([55349,57095]) equals '𝜇' (italic μ)

关于matlab - 当图形保存为 PDF 时,为什么 Matlab 使用 Latex 在图例中放置文本空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423665/

相关文章:

java - iTextpdf PdfPTable 如何在网格中的任意位置添加单元格?

latex - latex 和 bibtex 文件的不同编码

arrays - 在 NumPy 中,np.array([1, 2, 3, 4, 5]) 与 np.array([[1], [2], [3], [4], [5]]) 不同吗?

python - Numpy 与 mldivide ,"\"matlab 运算符

matlab - 在 MATLAB 中编译 C 文件

latex - 如何减少 latex 中图形之间的垂直间距?

javascript - 运行javascript后如何截取网页截图

matlab - 如何从 n 维数组中修剪前导和尾随 NaN 值?

ios - UIGraphicsSetPDFContextURLForRect 不会在 Core Graphics PDF 上创建可点击区域

java - 如何以编程方式从 PDF 文档中删除特定图像?