8

我试图在我的 matlab 图中包含一个图例,它使用 Latex 解释器作为图例文本。

但是,当我将图例设置为使用 Latex 解释器时,其中的文本会溢出图例框。

我曾尝试调整文本的大小,但无论字体大小如何,都会发生这种情况。

以下是我的脚本的相关部分:

I = legend([h1 h2 h3],'RainFall Flux', ... 
           'Temperature term ($$\rho \alpha$$dT)', ...
           'Salinity term ($$\rho \beta$$dS)');
c=get(I,'children');
set(c(5),'LineWidth',3); %adjust lineWidth in legend
set(c(2),'LineWidth',3); %adjust lineWidth in legend
set(I,'interpreter','latex'); %set Latex interpreter
set(I,'FontSize',15);

我假设这是因为 matlab 在使用 Latex 解释文本后没有考虑正确的字符大小。但是,我不知道如何解决这个问题。

任何见解将不胜感激!谢谢!

4

3 回答 3

1

如果我从您的第一条语句中删除 [h1 h2 h3] (和逗号),我在 R2007b 中对您的代码没有任何问题。但是,在调用乳胶解释器或设置 FontSize 后,图例中的线宽变化消失了,所以我不得不切换这些命令。换句话说,这段代码有效:

x=[1:100]; y=sin(pi*x/50); plot(x,y,x,y.^2,x,sqrt(abs(y)));
I = legend('RainFall Flux', ... 
           'Temperature term ($$\rho \alpha$$dT)', ...
           'Salinity term ($$\rho \beta$$dS)');
c=get(I,'children');
set(I,'interpreter','latex'); %set Latex interpreter
set(I,'FontSize',15);
set(c(5),'LineWidth',3); %adjust lineWidth in legend
set(c(2),'LineWidth',3); %adjust lineWidth in legend
于 2013-09-20T19:34:01.930 回答
0

另一种解决方法是在将默认解释器设置为 LaTex 之前更改字体大小。我过去做过这项工作,并注意到我上面的答案实际上也在这样做。

于 2014-12-17T20:36:48.287 回答
0

我从来没有找到完美的解决方法(即 MATLAB 自动为 LaTeX 获取正确的框)。

然而,以下是一个很好的软糖:通过添加~字符来强制额外空间 --- LaTeX 解释器隐藏它们,但它们包含在宽度计算中。

~s 添加到 LONGEST LINE OF THE LEGEND 以扩展框的宽度

I = legend([h1 h2 h3],'RainFall Flux', ... 
       'Temperature term ($$\rho \alpha$$dT)~~~', ...
       'Salinity term ($$\rho \beta$$dS)');

试一试,看看你需要添加多少波浪线来强制合适。

于 2017-02-21T16:11:47.637 回答