Matlab情节中的希腊字母

时间:2016-03-17 01:36:39

标签: matlab matlab-figure

我在Matlab中创建了一个情节,现在我想用以下命令添加一个图例:

legend({'Pos1', 'Pos2', 'Pos3', '\alpha Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);
legend('boxoff')

问题是\alpha没有转化为希腊字母。如果我省略大括号{}然后它可以工作,但我需要它们,因为我只想标记前四行。

我如何获得希腊字母alpha?

2 个答案:

答案 0 :(得分:6)

您忘记了$

legend({'Pos1', 'Pos2', 'Pos3', '$\alpha$ Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);

答案 1 :(得分:5)

我想延伸丹尼尔的答案并解释一些细节。

没有{}

会发生什么

当单元数组中的图例条目时,只能在Location的直接调用中使用属性Orientationlegend。如果存在其他属性,则将它们解释为图例条目。这意味着InterpreterTextSize,它的值将是图例条目。在没有{}的情况下,Adiel对显然有效的原因进行了评论:它不是真的,它甚至会因为上述原因而间接发出警告。

旁注:根据语法,必须在特性之前提供图例条目。然而,它确实以任何顺序工作,但我不建议使用这种无证件的行为。

选择地块

您提到必须使用{}仅选择前四行。这不是真的,因为legend默认选择了第一个 N 图。问题在于如上所述解释了属性。要选择特定图,您可以使用图表句柄省略第二个图:

legend([ph1,ph3,ph4,ph5], 'Pos1', 'Pos3', 'Pos4', 'Pos5');

使用其他属性

为了能够直接使用legend调用中的其他属性,您可以将图例条目作为单元格数组提供。这将条目与属性的名称 - 值对分离。例如,更改字体大小:

legend({'Pos1', 'Pos2', 'Pos3', 'Pos4'}, 'Fontsize', 22);

另一种可能性是使用句柄来设置其他属性而不使用单元格数组:

l = legend('Pos1', 'Pos2', 'Pos3', 'Pos4');
set(l, 'Fontsize', 22);     % using the set-function
l.FontSize = 22;            % object oriented

latex - 解释

如果将Interpreter设置为latex,那么图例条目的所有内容都需要通过latex进行编译。这意味着\alpha不能在数学环境之外使用。要在LaTeX中添加内联数学表达式,可以使用$ - 符号将其括起来。所以$\alpha$就像丹尼尔的回答中提到的那样有效。使用tex - 解释器,Matlab使用TeX标记的子集并自动适用于支持的特殊字符,因此当您不使用{$...$时不需要latex 1}} intrpreter。

建议

  • 别忘了$ - 标志。
  • legend
  • 的来电中添加特定地块
  • 使用单元格数组并将调用中的所有属性直接设置为legend
  • 使用...,您可以将长行分成几行。

例如:

legend([ph1,ph3,ph4,ph5], ...
    {'Pos $\alpha$', 'Pos $\beta$', 'Pos $\gamma$', 'Pos  $\delta$'}, ...
    'Location', 'northeast', 'Interpreter', 'latex', 'FontSize', 22);

这是示例的完整代码:

figure; hold on;
ph1 = plot(0,-1,'*'); ph2 = plot(0,-2,'*');
ph3 = plot(0,-3,'*'); ph4 = plot(0,-4,'*');
ph5 = plot(0,-5,'*'); ph6 = plot(0,-6,'*');
legend([ph1,ph3,ph4,ph5], ...
    {'Pos $\alpha$', 'Pos $\beta$', 'Pos $\gamma$', 'Pos  $\delta$'}, ...
    'Location', 'northeast', 'Interpreter', 'latex', 'FontSize', 22);

使用此结果:

example