我在Matlab中创建了一个情节,现在我想用以下命令添加一个图例:
legend({'Pos1', 'Pos2', 'Pos3', '\alpha Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);
legend('boxoff')
问题是\alpha
没有转化为希腊字母。如果我省略大括号{}然后它可以工作,但我需要它们,因为我只想标记前四行。
我如何获得希腊字母alpha?
答案 0 :(得分:6)
您忘记了$
legend({'Pos1', 'Pos2', 'Pos3', '$\alpha$ Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);
答案 1 :(得分:5)
我想延伸丹尼尔的答案并解释一些细节。
{}
当单元数组中的图例条目不时,只能在Location
的直接调用中使用属性Orientation
和legend
。如果存在其他属性,则将它们解释为图例条目。这意味着Interpreter
和TextSize
,它的值将是图例条目。在没有{}
的情况下,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);
使用此结果: