我搜索了很多地方,但没有找到一种方法来实现我想使用 MATLAB 实现的目标,即:将键(文本标签)放在 MATLAB 中图例中颜色线的左侧。
我想实现这个结果,这是默认结果,例如使用 gnuplot(参见上面的链接),这显然可以使用 MATLAB 的表亲 Octave(参见 Octave's legend
),它可以选择执行 legend( "left")
即“将 [s] 标签文本放置在键的左侧。”
是否可以使用 MATLAB 这样做?
使用 @nirvana-msu 提到的 legend
的第二个输出进行了轻微更新。
我们可以通过检索它们的当前位置并更改它来调整图例中文本和绘图对象的位置。图例中所有项的位置单位均为0~1之间的归一化数据单位。
像下面这样的东西应该可以工作。
%// Create some random data and display
figure;
p = plot(rand(2,3));
[L, handles] = legend({'one', 'two', 'three'});
%// Get the text handles
texts = findall(handles, 'type', 'text');
%// Get the line handles
lines = findall(handles, 'type', 'line');
%// Get the XData of all the lines
poslines = get(lines, 'XData');
%// Subtract 1 from all the positions and take the absolute value
%// this will shift them to the other side as the xlims are [0 1]
set(lines, {'XData'}, cellfun(@(x)abs(x - 1), poslines, 'uni', 0))
%// Get the position of all of the text labels
postext = get(texts, 'Position');
%// Figure out where the lines ended up
xd = get(lines, 'xdata');
xd = cat(2, xd{:});
%// Have the labels be next to the line (with 0.05 padding)
positions = cellfun(@(x)[min(xd) - 0.05, x(2:3)], postext, 'uni', 0);
set(texts, {'Position'}, positions, ...
'HorizontalAlignment', 'right');
R2014a
R2015b
我是一名优秀的程序员,十分优秀!