小编mrs*_*tys的帖子

Matlab字体在打印或导出时无法正确呈现

我正在尝试制作一个非常适合LaTeX文档的matlab图形。一个已知的问题是XTickLabel和YTickLabels不使用LaTeX解释器进行渲染,从而导致图形看起来很糟糕。(注意:我意识到有一些修复方法,其中涉及用文本对象(例如format_tics)替换tex标签,但是当绘制多个图形时,这些解决方案并不简单,并且它们自身也需要大量调整每个人物。)

我觉得通过更改字体(而不是替换图形中的对象)来解决此问题要优雅一些。

下载了 LaTex字体的.otf版本,并将其设置为在整个图中显示:

    set(0,'defaulttextinterpreter','latex')
    set(0,'DefaultTextFontSize', 10)
    set(0,'DefaultTextFontname', 'CMU Serif')
    set(0,'DefaultAxesFontSize', 10)
    set(0,'DefaultAxesFontName','CMU Serif')
Run Code Online (Sandbox Code Playgroud)

在Matlab图形窗口中,一切看起来都不错。但是,在打印时,事情会分崩离析。

如果我使用“ painters”渲染器打印(使用导出GUI或打印命令),则字体在整个过程中看起来很滑稽且前后不一致。某些符号将无法正确显示,并且在整个打印图形中会出现不同的字体。

 print('-depsc','-painters',['InstP.eps'])        
Run Code Online (Sandbox Code Playgroud)

如果我切换到zbuffer渲染器,字体会变得一致,但是还有其他错误。质量下降,一些文本被忽略(或被其他文本覆盖)。

 print('-depsc','-zbuffer',['InstZ.eps'])  
Run Code Online (Sandbox Code Playgroud)

opengl到处都是一团糟。

有谁知道为什么这些渲染器在使用这些字体时遇到麻烦?还有任何变通办法来使字体正确呈现?

样例代码:

    subplot(1,2,1)
         imshow(IMG,'XData',XDat,'YData',YDat);
         axis image;axis([0 20 -5 5]);
         xlabel('$x^*$');
    subplot(1,2,2)
    imshow(SqImg,'XData',Xs,'YData',Xs);
    xlabel('$\Phi_B$');
    ylabel('$\Phi_A$');
    axis square;
    set(gca,'YDir','normal',...
            'XAxisLocation','bottom',... 
            'YAxisLocation','left',... 
         'XTick',(0:.5:1).^Exp,'XTickLabel',0:.5:1,...
         'YTick',(0:.5:1).^Exp,'YTickLabel',0:.5:1);


 print('-depsc','-painters',['InstP.eps'])        
 print('-depsc','-zbuffer',['InstZ.eps'])        
Run Code Online (Sandbox Code Playgroud)

matlab latex axes renderer

5
推荐指数
1
解决办法
4162
查看次数

Matlab:减少图例中符号和标签之间的间距

在matlab中使用legend命令时,如何减少图例符号与其相应标签之间的水平距离?

示例代码:

Line1=plot(x1,y1,'s');
Line2=plot(x2,y2,'o');
Line3=plot(x3,y3,'^');
Leg=legend([Line1, Line2, Line3],...
           'Line1 text','Line2 text','Line3 text',...
           'Location','NorthEast');
Run Code Online (Sandbox Code Playgroud)

matlab legend legend-properties matlab-figure

3
推荐指数
1
解决办法
4949
查看次数