我试图在我的matlab图中包含一个图例,该图使用Latex解释器作为图例文本。
当我将图例设置为使用Latex解释器时,文本内的文本溢出了图例框。
我尝试调整文本的大小,但无论FontSize如何都会发生这种情况。
以下是我的脚本的相关部分:
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);
我假设这是因为在使用Latex解释文本后,matlab没有考虑正确的字符大小。但是,我不知道如何解决这个问题。
非常感谢任何见解!谢谢!
答案 0 :(得分:1)
如果我从你的第一个语句中删除[h1 h2 h3](和逗号),我在R2007b中的代码没有任何问题。但是,在调用latex解释器之后,或者在设置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
答案 1 :(得分:0)
另一种方法是在将默认解释器设置为LaTex之前更改字体大小。我过去曾做过那些工作,并注意到我上面的答案实际上也是这样做的。
答案 2 :(得分:0)
我从来没有找到一个完美的解决方案(即MATLAB自动为LaTeX提供正确的方框)。
然而以下是一个很好的软糖:通过添加~
个字符强制额外空间--- LaTeX解释器会隐藏它们,但它们包含在宽度计算中。
将~
添加到最长的LEGEND行以扩展框的宽度
I = legend([h1 h2 h3],'RainFall Flux', ...
'Temperature term ($$\rho \alpha$$dT)~~~', ...
'Salinity term ($$\rho \beta$$dS)');
与它一起玩,看看你需要添加多少个波浪,以强制合身。